首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化特定精度范围内的货币

格式化特定精度范围内的货币
EN

Stack Overflow用户
提问于 2014-06-10 22:53:00
回答 3查看 496关注 0票数 2

我正在尝试格式化货币,它将始终包含2个十进制数字,但如果有额外的精度数字显示最多5位。举个例子:

代码语言:javascript
复制
for value = 5.0 <br />
display: $5.00

for value = 5.023 <br />
display: $5.023

for value = 5.333333333333333 <br />
display: $5.33333

我一直在尝试.ToString()格式,但是我似乎找不到合适的选项。

说明:我想要显示2-5个小数,在第二个数字后截断零。

代码语言:javascript
复制
for value = 5.000000000000000 <br />
display: $5.00

for value = 5.333333333333333 <br />
display: $5.33333
EN

回答 3

Stack Overflow用户

发布于 2014-06-10 23:01:04

C或c用于货币,后跟数字数:http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

代码语言:javascript
复制
decimal value=1.12345m;
Console.WriteLine("{0:c2}",value);
Console.WriteLine(value.ToString("c2"));

将显示$1.12

要将位数保持在2到5之间,您必须做一些数学运算:

代码语言:javascript
复制
    var digits = Math.Min(5, (int)Math.Max((byte)2, BitConverter.GetBytes(decimal.GetBits(value)[3])[2]));
    Console.WriteLine(value.ToString("c" + digits));
票数 4
EN

Stack Overflow用户

发布于 2014-06-10 23:22:02

您可以在模型中使用also attribute,以避免每次出现变量时都指定格式。

代码语言:javascript
复制
[DisplayFormat(DataFormatString="{0:C2}")]
public decimal Value;

对于非可选和可选数字使用:

代码语言:javascript
复制
value.ToString("0.00###");
票数 2
EN

Stack Overflow用户

发布于 2014-06-10 22:57:07

将值* 100000相乘,然后删除任何小数点并将其除以/ 100000

代码语言:javascript
复制
value = value * 100000;
value = Math.Round(value,0);
value = value /100000;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24144131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档