【问题标题】:Object.ToString() returning erroneous value [duplicate]Object.ToString() 返回错误值
【发布时间】:2013-12-20 15:45:03
【问题描述】:

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

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

为什么在 c# 中有这种行为?

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

【问题讨论】:

  • 没有错。提示:1d == 1.00d 的结果是什么?现在,您可以指定特定格式以获得所需的文本结果..
  • 为什么人们必须对初学者的问题投反对票。这是你说“你是菜鸟”的方式吗?这个问题的表述很好,很清楚他问了什么。所以我会把重点还给你。

标签: c#


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这通常是默认行为,是的。
    【解决方案3】:

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

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

    来源:MSDN: Standard Numeric Format Strings

    【讨论】:

      【解决方案4】:

      请查看文档。

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

      这是预期的结果。

      【讨论】:

        【解决方案5】:

        试试value.ToString("F1")

        Standart Numeric Formats

        【讨论】:

          猜你喜欢
          • 2013-08-23
          • 2022-01-05
          • 2019-02-03
          • 1970-01-01
          • 2015-06-19
          • 2014-01-16
          • 2019-10-13
          • 2020-10-05
          • 2015-11-19
          相关资源
          最近更新 更多