0.0.ToString(“。####”)返回空字符串

时间:2013-09-18 15:33:03

标签: c# .net string-formatting

为什么0.0.ToString(".####")会返回空字符串而不是0?我应该使用什么格式字符串来正确输出?

2 个答案:

答案 0 :(得分:5)

要始终显示1s位置的数字,则需要在该数字的字符串格式说明符中指定零。请参阅以下内容:

// outputs "0"
0.0.ToString("0.####")

如果你想显示额外的小数位数,即使它们为零,那么你也可以使用零来做到这一点:

// outputs "5.1000"
(5.1).ToString("0.0000")

有关更多信息,请参阅: Custom Numeric Format Strings

如果您只想显示数字零的1位置,请执行以下操作:

String text = (number == 0) ? "0" : number.ToString(".####");

答案 1 :(得分:5)

考虑一下你在问什么 - 在小数点之前没有要求的数字,在之后最多要求4个可选有效数字小数点。

由于0.0在小数之前或之后有 no 有效数字,因此不返回任何内容。

为了给你正确的格式字符串,我们需要在以下每种情况下都有预期的输出:

  • 数字> = 1
  • 0到1之间的数字(不包括)
  • 0

请注意,您可以使用section separators明确说明如何格式化正数,负数和0:

0.0.ToString(".####;-.####;0")   // returns "0"

使用节分隔符(与显式检查0相比)的好处是,如果格式化的字符串等于0 ,它将使用“0”格式说明符

例如,

(-0.0000001).ToString(".####;-.####;0")

将返回"0",因为根据您的格式规范,小的负数将四舍五入为四位小数。