Double.ToString为0返回空

the*_*man 3 c# double

任何人都可以帮助我理解为什么"text"变量为以下代码段为空,

double d = 0;

var text = d.ToString("##,###,###,###");
Run Code Online (Sandbox Code Playgroud)

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

Son*_*nül 10

"#"自定义说明符

请注意,即使零是字符串中的唯一数字,此说明符也不会显示不是有效数字的.仅当它是显示的数字中的有效数字时,它才会显示零.

如果要将其显示为00,000,000,000,则可以使用" "0"自定义说明符".但请记住,如果它与double中的任何数值都不匹配,则此说明符将为零.

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

如果您想显示0除其他值以外的其他值,只需将您的最后一位数字格式更改#0like ##,###,###,##0.

在我看来,更好的方法可能是使用数字"N"格式说明符.这个说明符生成数千个组分隔符,它的大小,小数分隔符和它的大小(你可以省略这个部分N0)可能的负号和它的模式.

double d = 0;
var text = d.ToString("N0");
Run Code Online (Sandbox Code Playgroud)

另外我想以,你的字符串格式提到.你希望像千位分隔符一样分组(并且因为你的代码中没有使用任何 分隔符IFormatProvider),如果你CurrentCulture的字符NumberGroupSeparator不同,,那么该字符将被显示,而不是,.

例如; 我在土耳其,我目前的文化是tr-TR,这种文化有.一个NumberGroupSeparator.这就是为什么你的代码会在我的机器上生成结果而##.###.###.###不是格式##,###,###,###.