鱼C论坛

 找回密码
 立即注册
查看: 191|回复: 2

[已解决]0.1+0.2=0.30000000000000004,为什么0.1+0.3=0.4

[复制链接]
发表于 2025-2-20 22:50:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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不也不是整数吗?
最佳答案
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-21 08:31:40 | 显示全部楼层
所以,0.1的浮点数到底是什么样子的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-5 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表