任何人都可以帮助我理解为什么"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.这就是为什么你的代码会在我的机器上生成结果而##.###.###.###不是格式##,###,###,###.