【问题标题】:Simple C# calculation - datatypes简单的 C# 计算 - 数据类型
【发布时间】:2010-12-10 15:15:05
【问题描述】:

可能是一个简单的问题,但这个计算让我很困扰..为什么double test = 57.05 - 57 等于 0.049999999999997158 而不是 0.05?我应该使用哪种数据类型来获得正确的结果?

【问题讨论】:

  • 但从工程的角度来看,这是0.000000000005%的误差,应该足够接近。

标签: c#


【解决方案1】:

使用decimal。并阅读this

【讨论】:

  • 我会说“非常”而不是“非常”
【解决方案2】:

尝试将 .05 十进制转换为二进制并告诉我你得到了什么结果(提示:这是一个重复值)。

【讨论】:

    【解决方案3】:

    长答案:Floating Point Representation

    简短回答:像 double 这样的类型符合 IEEE 754,它规定了可能在任何地方都有小数点的数据类型(浮点数)。由于计算机本机二进制中的表示,在许多情况下对这些表示的数学运算结果可能只是实际结果的近似值。

    【讨论】:

      【解决方案4】:

      浮点计算不正确。

      double-precision-problems-on-c-net怎么样

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多