【发布时间】:2010-01-26 18:39:27
【问题描述】:
如果我有一个decimal,我如何获得它的带有两位小数的字符串版本?这不起作用:
Math.Round(myDecimal, 2).ToString("{0.00}");
【问题讨论】:
如果我有一个decimal,我如何获得它的带有两位小数的字符串版本?这不起作用:
Math.Round(myDecimal, 2).ToString("{0.00}");
【问题讨论】:
不要使用大括号,它们用于使用string.Format 将格式化值嵌入到更长的字符串中。使用这个:
myDecimal.ToString("0.00");
【讨论】:
"{0.00}" 也不适用于string.Format;你必须在那里使用"{0:0.00}"。
也许我错了,但我试过 myDecimal.ToString(); 并且成功了。
【讨论】:
float 和double 不同,decimal 数据类型将保留精度的位数,因此Math.Round(myDecimal, 2).ToString(); 应该可以正常工作。不需要格式字符串。
假设myDecimal 是System.Decimal,那么Math.Round(myDecimal, 2).ToString(); 将根据需要显示两位小数的精度,不带任何格式字符串(除非您的数字的绝对值大于 10^27-1 )。这是因为decimal 数据类型保留了数字的完整精度。也就是说1m、1.0m、1.00m的存储方式都不同,显示也会不同。
请注意,float 或 double 并非如此。 1f、1.0f 和 1.00f 的存储和显示方式相同,1d、1.0d 和 1.00d 也是如此。
由于必须在运行时解析格式字符串,因此在大多数情况下,我可能会在这样的代码中省略它。
【讨论】: