【问题标题】:Why are there mistakes in calculations of floats and doubles?为什么浮点数和双精度数的计算会出现错误?
【发布时间】:2012-06-18 21:35:33
【问题描述】:

我一直想知道为什么当计算机应该给出准确的答案时,浮点数并不准确。我在某处的书中读到,最好将变量与我们想要的值周围的数字进行比较,因为计算值可能并不总是像我们预期的那样是整数。机器如何计算这些划分?欢迎任何网站链接:)

【问题讨论】:

标签: floating-point double


【解决方案1】:

Jon Skeet 在这里提到了它(向下滚动直到您看到幻灯片上绘制的“double d=0.3;”): http://msmvps.com/blogs/jon_skeet/archive/2009/11/02/omg-ponies-aka-humanity-epic-fail.aspx

这里有更详细的答案: http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

【讨论】:

【解决方案2】:

一个简单的答案是计算机使用有限数量的数字来表示一个数字。

如果您尝试表示,即十进制数 1/7,它将是 0.14285714... 以此类推。 计算机也会发生同样的情况,即尝试用二进制表示数字 1/10(十进制的 0.1),这也变成了一个无限级数。

因此,有时您无法获得最准确的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2010-10-22
    • 2018-02-23
    相关资源
    最近更新 更多