我正在尝试格式化货币,它将始终包含2个十进制数字,但如果有额外的精度数字显示最多5位。举个例子:
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个小数,在第二个数字后截断零。
for value = 5.000000000000000 <br />
display: $5.00
for value = 5.333333333333333 <br />
display: $5.33333发布于 2014-06-10 23:01:04
C或c用于货币,后跟数字数:http://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx
decimal value=1.12345m;
Console.WriteLine("{0:c2}",value);
Console.WriteLine(value.ToString("c2"));将显示$1.12
要将位数保持在2到5之间,您必须做一些数学运算:
var digits = Math.Min(5, (int)Math.Max((byte)2, BitConverter.GetBytes(decimal.GetBits(value)[3])[2]));
Console.WriteLine(value.ToString("c" + digits));发布于 2014-06-10 23:22:02
您可以在模型中使用also attribute,以避免每次出现变量时都指定格式。
[DisplayFormat(DataFormatString="{0:C2}")]
public decimal Value;对于非可选和可选数字使用:
value.ToString("0.00###");发布于 2014-06-10 22:57:07
将值* 100000相乘,然后删除任何小数点并将其除以/ 100000
value = value * 100000;
value = Math.Round(value,0);
value = value /100000;https://stackoverflow.com/questions/24144131
复制相似问题