为什么0.ToString(“#。##”)返回一个空字符串而不是0.00或至少为0?


114

为什么0.ToString("#.##")返回一个空字符串?应该不是0.00或者至少为0吗?

Answers:



135

因为在格式字符串中,#用来表示可选的字符占位符;仅在需要表示数字时使用。

如果您改为执行此操作,0.ToString("0.##");则会得到:0

有趣的是,如果您这样做0.ToString("#.0#");.0

如果要全部三位数字:0.ToString("0.00");产生:0.00


从评论到答案,您的论点似乎是,

它应该显示为“ 0”,因为如果数值为0,为什么有人会想看到一个空字符串?

响应很简单:您可以选择希望如何显示它。这就是自定义格式字符串的用途。您只是根据需要选择了错误的格式字符串


20

根据有关Digit Placeholder的文档。

如果要格式化的值在格式字符串中出现“#”的位置有一个数字,则该数字将被复制到结果字符串中。否则,结果字符串中的该位置将不存储任何内容。即使该字符不是有效数字,该说明符也不会显示“ 0”字符,即使“ 0”是字符串中的唯一数字。如果所显示数字中的有效数字,它将显示“ 0”字符。“ ##”格式字符串使该值四舍五入到小数点前的最接近的数字,其中始终使用从零舍入。例如,使用“ ##”格式化34.5将得到值35。

如果要显示零,请使用Zero PlaceHolder

如果要格式化的值在格式字符串中出现“ 0”的位置有一个数字,那么该数字将被复制到结果字符串中。小数点前最左边的“ 0”和小数点后最右边的“ 0”的位置决定了结果字符串中始终存在的数字范围。
“ 00”说明符使值四舍五入到小数点前的最接近的数字,其中始终使用从零舍入。例如,将34.5格式化为“ 00”将得到值35。



-1

像这样使用它:

0.ToString("#0.##")

0#如果该值为0 ,则将确保将输出值设置为0,否则将显示该值。所以,0.0.ToString("#0.##")=0.0010.ToString("#.##")=10.00

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.