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

use*_*567 111 c# c#-4.0

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

Ric*_*lly 181

#字符串格式表示该值是可选的.如果您希望获得输出0.00,则需要以下内容:

0.ToString("0.00");
Run Code Online (Sandbox Code Playgroud)

请参阅此处了解可以传递给此方法的自定义数字格式.

  • 有一件事让我感到困惑,为什么结果不是0.因为0不是可选的.空是有道理的吗? (3认同)

And*_*ber 132

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

如果你这样做:0.ToString("0.##");你得到:0

有趣的是,如果你这样做:0.ToString("#.0#");你得到:.0

如果你想要所有三个数字:0.ToString("0.00");产生:0.00


从评论到这个答案,你的论点似乎是,

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

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


Mig*_*ero 20

根据有关数字占位符的文档.

如果格式化的值在格式字符串中出现"#"的位置有一个数字,则该数字将复制到结果字符串.否则,结果字符串中的任何位置都不存储任何内容.如果它不是有效数字,则该说明符永远不会显示'0'字符,即使'0'是字符串中的唯一数字.如果它是显示的数字中的有效数字,它将显示'0'字符."##"格式字符串使该值四舍五入到小数点前面的最近数字,其中始终使用从零开始的舍入.例如,使用"##"格式化34.5将导致值35.

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

f格式化的值在格式字符串中出现"0"的位置有一个数字,然后该数字被复制到结果字符串.小数点前面最左边的"0"和小数点后面最右边的"0"的位置决定了结果字符串中始终存在的数字范围.
"00"说明符使该值四舍五入到小数点前面的最近数字,其中始终使用从零开始的舍入.例如,使用"00"格式化34.5将导致值35.