翻倍.ToString返回0时为空

本文关键字:0时 返回 ToString 翻倍 | 更新日期: 2023-09-27 17:52:44

谁能帮我理解为什么"text"变量是空的下面的代码片段,

double d = 0;
var text = d.ToString("##,###,###,###");

如果我将d的值更改为任何非零值,我将得到其正确的字符串表示。

翻倍.ToString返回0时为空

From The "#" Custom Specifier

注意,该说明符从不显示非a的零即使0是字符串中唯一的数字,也是有效数字。它将显示零只有当它是一个有效的数字

如果您想将其显示为00,000,000,000,则可以使用The "0" Custom Specifier。但是请记住,如果它不匹配双精度体中的任何数值,则此说明符将置零。

这意味着(15).ToString("00,000,000,000")将产生00,000,000,015作为结果。

如果你想显示0而不是其他值,只需将最后一位数字格式从#更改为0,如##,###,###,##0

但是在我看来,一个更好的方法可能是使用数字"N"格式说明符。此说明符生成数千组分隔符及其大小,小数分隔符及其大小(您可以使用N0省略此部分)可能的负号及其模式。

double d = 0;
var text = d.ToString("N0");

我还想提到,在你的字符串格式。你想分组像几千分隔符,(因为你没有使用任何 IFormatProvider在你的代码),如果你的CurrentCultureNumberGroupSeparator不同于,字符,那个字符将显示,而不是,

例如

;我在土耳其,我现在的文化是tr-TR,这个文化有.作为NumberGroupSeparator。这就是为什么您的代码将在我的机器中生成##.###.###.###格式而不是##,###,###,###格式的结果。

对于字符串格式,#表示可选位置。例如,如果数字等于或大于10,像"#0"这样的格式字符串将显示第一个数字字符。因此,如果您想显示您的数字,则需要将您的标签转换为零。