为什么0.ToString(“#。##”)返回一个空string而不是0.00或至less是0?
为什么0.ToString("#.##")
返回一个空string? 不应该是0.00
或至less0 ?
string格式中的#
表示该值是可选的。 如果你想得到0.00
的输出,你需要以下内容:
0.ToString("0.00");
请参阅这里了解可以传递给此方法的自定义数字格式 。
因为在格式string中, #
用于表示可选的字符占位符; 只有在需要表示数字时才使用。
如果你这样做: 0.ToString("0.##");
你得到: 0
有趣的是,如果你这样做: 0.ToString("#.0#");
你得到: .0
如果你想要所有的三个数字: 0.ToString("0.00");
产生: 0.00
从评论到这个答案,你的论点似乎是,
它应该显示“0”,因为如果数字值为0,为什么有人会想看到一个空string?
反应很简单: 您可以select希望显示的方式。 这就是自定义格式string的用途。 您只需根据需要select不正确的格式string 。
根据关于数字占位符的文档。
如果被格式化的值在格式string中出现“#”的位置有一个数字,那么该数字将被复制到结果string中。 否则,结果string中没有任何内容存储在该位置。 即使“0”是string中的唯一数字,该说明符也不会显示“0”字符,如果它不是有效数字。 如果显示的数字是有效数字,将显示“0”字符。 “##”格式string会使值四舍五入到小数点前的最接近的数字,总是使用从零开始舍入。 例如,使用“##”格式化34.5将导致值35。
如果你想零显示使用零地方pipe理
f格式化的值在格式string中出现“0”的位置有一个数字,然后将该数字复制到结果string中。 小数点前最左边的“0”和小数点后最右边的“0”的位置决定了总是出现在结果string中的数字的范围。
“00”说明符会使值四舍五入到小数点前的最接近的数字,总是使用从零开始舍入。 例如,用“00”格式化34.5将导致值35。