如何在ToString(CultureInfo.NumberFormat)中决定小数位数

本文关键字:决定 小数 NumberFormat ToString CultureInfo | 更新日期: 2023-09-27 18:28:41

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

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?对不起,我的英语糟透了,请帮帮我。

如何在ToString(CultureInfo.NumberFormat)中决定小数位数

使用CurrentCulture.NumberFormat.CurrentDecimalDigits属性,您将获得decimal类型的小数位数。999M类型是(Decimal)类型,它被认为是Currency。

Decimal结构在从字符串解析后以及在执行计算时保留值的精度。ToString()方法正确地指示了值的实际内部精度,无论使用的是哪种区域性。

然而,调试器似乎以最简单的形式显示值,而不是显示ToString()将返回的内容,这至少会让事情变得混乱。