Object.ToString()返回错误的值

时间:2013-12-20 07:34:29

标签: c#

如果我的Object值是例如1.0,则.ToString()返回1而不是1.0。

但是如果值是例如1.5,则.ToString()返回1.5。

为什么在c#中出现这种行为?

注意:在这种情况下,对象是双值。

5 个答案:

答案 0 :(得分:3)

它不是“错误的”,它是实际数据类型的默认格式。

如果您希望它始终为1.0,那么您需要将其格式化为。

String.Format("{0:0.0}", myObject);
or
((double)myObject).ToString("0.0");

答案 1 :(得分:2)

为什么1.0会返回1.0而不是说1.00? 1.23也会返回两位小数,对吧?

C#(我的猜测也是大多数其他语言)会打印出小数位,如果它们很重要的话。小数点后的一串零并不重要,它们不会改变数字的值。

答案 2 :(得分:1)

这是因为Double.ToString()默认使用“G”,通用格式,说明符。这意味着数字将转换为最紧凑的形式,包括此规则:

  

如果需要,结果包含小数点,尾随零   小数点后省略。

来源:MSDN: Standard Numeric Format Strings

答案 3 :(得分:0)

请查看文档。

http://msdn.microsoft.com/en-us/library/3hfd35ad(v=vs.110).aspx

这是预期的结果。

答案 4 :(得分:0)

尝试value.ToString("F1")

Standart Numeric Formats