任何人都可以帮助我理解为什么“text”变量对于以下代码段为空,
double d = 0;
var text = d.ToString("##,###,###,###");
如果我将d的值更改为任何非零值,我会得到正确的字符串表示。
答案 0 :(得分:10)
请注意,此说明符从不显示不是a的零 有效数字,即使零是字符串中的唯一数字。它 只有当它是数字中的有效数字时才会显示零 正在展示。
如果您想将其显示为00,000,000,000
,则可以使用The "0"
Custom Specifier。但请记住,如果它与double中的任何数值都不匹配,则此说明符为零。
这意味着(15).ToString("00,000,000,000")
会生成00,000,000,015
。
如果您想显示0
以外的其他值,只需将您的最后一位数格式从#
更改为0
,如##,###,###,##0
。
但在我看来,更好的方法可能是使用The numeric "N"
format specifier。此说明符生成数千个组分隔符及其大小,小数点分隔符及其大小(您可以使用N0
省略此部分)可能的负号及其模式。
double d = 0;
var text = d.ToString("N0");
此外,我想提到您的字符串格式中的,
。您希望对千位分隔符进行分组(并且因为您的代码中没有使用任何 IFormatProvider
)CurrentCulture
{{3 }}与,
字符不同,将显示字符,而不是,
。
例如;我在土耳其,目前的文化是tr-TR
,这种文化.
为NumberGroupSeparator
。这就是为什么您的代码会以##.###.###.###
格式而不是##,###,###,###
在我的机器中生成结果的原因。
答案 1 :(得分:0)
对于字符串格式,#表示可选位置。例如,格式字符串,如"#0"如果数字等于或大于10,将显示第一个数字字符。因此,如果要显示数字,则需要将主题标签转换为零。