gpt4 book ai didi

floating-point - 为什么 0.1 + 0.1 == 0.2?

转载 作者:行者123 更新时间:2023-12-01 00:22:32 24 4
gpt4 key购买 nike

这与Java有关。据我所知,由于二进制表示,Java 无法完美表示 0.1。这使得

0.1 + 0.1 + 0.1 == 0.3

错误的。然而,为什么
0.1 + 0.1 == 0.2

给出真的?

最佳答案

0.1 cannot be perfectly represented by Java because of binary representations. That makes

0.1 + 0.1 + 0.1 == 0.3

false.


这不是相等性错误的全部原因,尽管它是其中的一部分。 0.3也不完全是 3/10。碰巧 0.2正好是两倍 0.1 (虽然它们不是分别为 2/10 和 1/10),并且加上 0.1 to 本身产生的值也是您在键入常量 0.2 时得到的值。 .另一方面,您在操作后获得的总体近似值 0.1 + 0.1 + 0.1与近似分离 0.3 略有不同从 3/10。
如果我们使用具有 5 个有效数字的十进制,您可能会惊讶于 1/3 * 3 == 1 不成立(1/3 将计算为 0.33333,而 3 将计算为 0.99999,这与 1 不同),而 1/4 * 4 == 1 确实成立(1/4 将计算为 0.25,而 4 将计算为 1)。
您的问题与此有些相似,但用于基数为 2 的计算。每一个常数和操作都是一个近似的机会。有时近似值不会发生,有时它们发生但会抵消,因此最终结果比您期望的更准确。在 0.1 + 0.1的情况下,结果不是 2/10,但它与您写 0.2 时得到的 2/10 近似值相同,所以等式成立。与 0.1 + 0.1 + 0.1我们碰巧没那么幸运。

关于floating-point - 为什么 0.1 + 0.1 == 0.2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com