python - 浮点精度仍应给出正确的结果

标签 python floating-point precision

我知道数字 0.3 不能用二进制精确表示,这就是为什么要这样做:

0.1+0.2==0.3

给出False作为答案。

但是,即使数字不能精确表示,结果仍应为 True。这是我的推理:

Python 将执行 0.1+0.2 运算,结果不会正好是 0.3,而是某个接近 0.3 的数字将被存储为比较的左操作数。

但是它必须采用正确的操作数 0.3 ,将其转换为数字,这将再次给出不完全等于 0.3 的数字,并将其存储为比较的右操作数。

最后比较两个数字。

所以结果实际上应该给出 True,即使在内部它将比较两个数字并且它们实际上都不是 0.3

我在这里缺少什么?如果数字无法精确表示,那么这对于两个操作数都必须成立,因此我们将比较类似的内容

0.1+0.2==0.3
0.30000000000000004 == 0.30000000000000004
True

最佳答案

表示 0.1 的误差加上表示 0.2 的误差不一定等于表示 0.3 的误差。

关于python - 浮点精度仍应给出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58065921/

相关文章:

r - 将浮点精度添加到qnorm/pnorm吗?

python - Pandas Dataframe 浮点精度

python - 从 Python 调用 DOS 可执行文件

scala - Scala REPL 中的浮点文字错误

java - 使用 NumberFormat 具有两位小数的 double 值

java - 为什么从最大到最小 float 相加不如从最小到最大相加准确?

java - JVM/CLR 上相同字节的不同浮点值

javascript - 读写 DOCX 文件

python - 如何计算数据帧中一行中非 NaN 列的数量?

python - 为什么使用相同算法计算 pi 的两个代码的运行时间不同?