计算机如何处理浮动错误

2024-04-23 23:05:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道浮点数有它们的limitations,所以这是可以预期的:

>>> 0.1 + 0.2 == 0.3
False

但为什么这是有效的?计算机也不能存储0.45,0.55reliably对吧?你知道吗

>>> 0.45 + 0.55 == 1.00
True

我想知道,在第一种情况下,计算机是如何无法纠正其错误的,而在后一种情况下,它是如何纠正的。你知道吗


Tags: falsetrue计算机错误情况浮点数limitationsreliably
1条回答
网友
1楼 · 发布于 2024-04-23 23:05:01

如你所知,大多数十进制数字不能准确地存储。除1.0之外,以上所有数字都是这样。你知道吗

但它们的存储精度很高。代替0.3,使用一些非常接近的可表示数字。它不仅非常接近,而且是最接近这样的数字。你知道吗

当您计算0.1 + 0.2时,会计算另一个可表示的数字,它也非常接近0.3。你是“不幸的”,它与最接近的可表示数字不同。你知道吗

这并不涉及真正的运气,0.10.2都用稍微大一点的数字来表示。添加时,这两个错误相加,因为它们的符号相同,得到的结果类似于0.30000000000000004。你知道吗

0.45 + 0.55中,错误具有不同的符号,可以抵消。你知道吗

相关问题 更多 >