小杨凯凯 发表于 2025-2-20 22:50:49

0.1+0.2=0.30000000000000004,为什么0.1+0.3=0.4

008讲里面,当浮点数相加的结果等于整数时,偏差则不会出现,比如 0.1 + 0.2 会出现偏差,这个我们在视频中已经演示过了,但 0.1 + 0.2 + 0.7 却能得到整数答案 1.0,0.1+0.2=0.300000000004,为什么0.1+0.3=0.4,0.4不也不是整数吗?

FishC 发表于 2025-2-20 22:51:29

为什么 0.1 + 0.2 ≠ 0.3,而 0.1 + 0.3 = 0.4?

浮点运算出现误差的原因在于 **二进制存储的精度**。简单来说,某些十进制小数无法被精确地表示为二进制浮点数,从而导致运算后出现偏差。

以下是具体原因的解答:


[*] **为什么 0.1 + 0.2 = 0.30000000000000004**
    在二进制中,0.1 和 0.2 都不能被精确表示,它们的二进制浮点表示是近似值。因此,0.1 和 0.2 相加后,结果也是一个近似值,无法精确得到 0.3,而是略大于 0.3。

[*] **为什么 0.1 + 0.3 = 0.4?**
    0.1 和 0.3 的二进制浮点表示虽都是近似值,但它们的误差可以在浮点运算中“正好抵消”,因此最终结果与 0.4 的二进制表示一致,看起来没有发生任何偏差。

[*] **为什么 1.0 没有偏差?**
    整数(如 1.0)可以被二进制完美表示,不存在近似问题,因此不会有偏差。


总结:浮点数相加时是否出现偏差,取决于两个数的二进制表示及它们的累积误差。如果这些误差互相抵消,就不会显示偏差;如果不能抵消,则会表现出计算误差。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

gainer 发表于 7 天前

所以,0.1的浮点数到底是什么样子的?
页: [1]
查看完整版本: 0.1+0.2=0.30000000000000004,为什么0.1+0.3=0.4