有谁能帮我理解下面片段为什么“text”变量为空?
double d = 0;
var text = d.ToString("##,###,###,###");
如果我将d的值更改为任何非零值,我将获得其正确的字符串表示。
来自 "#"
自定义格式说明符
请注意,此说明符从不显示非显著数字的零,即使在字符串中零是唯一的数字。它仅在被显示的数字中零是一个显著数字时才会显示。
如果您想将其显示为 00,000,000,000
,则可以使用"0"
自定义格式说明符。但请记住,此说明符将在双精度值中找不到任何数值时放置零。
这意味着 (15).ToString("00,000,000,000")
将生成 00,000,000,015
作为结果。
double d = 0;
var text = d.ToString("N0");
,
。如果您想要像千位分隔符一样进行分组(并且由于您的代码中未使用任何IFormatProvider
),如果您CurrentCulture
的NumberGroupSeparator
与逗号,
字符不同,则会显示该字符,而不是逗号,
。tr-TR
,此文化将.
作为NumberGroupSeparator
。这就是为什么在我的机器上,您的代码将生成##.###.###.###
格式的结果,而不是##,###,###,###
的原因。关于字符串格式化,#代表可选的位置。例如,像“#0”这样的格式字符串将在数字大于或等于10时显示第一个数字字符。因此,如果您想显示数字,则需要将您的井号转换为零。
var text = d.ToString("##,###,###,##0");
。 - Blas Sorianod.ToString("N0")
。 - Franck