如何在ToString(CultureInfo.NumberFormat)中确定十进制数字

时间:2012-03-21 06:14:17

标签: c# decimal

我今天在C#中遇到了使用CultureInfo格式化十进制的问题。 我有一个小数fValue的值为999,当它运行fValue.ToString(CurrentCulture.NumberFormat)时返回999.0000。 在VS中进行调试时,我可以在Watch窗口中获得以下值:

fValue //returns 999
fValue.ToString(CurrentCulture.NumberFormat)  //the issue returns 999.0000 
(999M).ToString(CurrentCulture.NumberFormat)  //returns 999
CurrentCulture.NumberFormat.NumberDecimalDigits //returns 2

为什么第二个值返回999.0000而不是999或999.00?对不起我的废话英语有人请帮忙。

2 个答案:

答案 0 :(得分:0)

使用CurrentCulture.NumberFormat.CurrencyDecimalDigits属性,您将获得Decimal类型的小数位数。 999M类型是typeof(十进制),它被视为货币。

答案 1 :(得分:0)

Decimal结构在从字符串解析后保留值的精度,并且还会在执行计算时保留。无论使用哪种文化,ToString()方法都会正确指示值的实际内部精度。

然而,调试器似乎以最简单的形式显示值,而不是显示ToString()将返回的内容,这使得至少可以说令人困惑。