0.1+0.2为什么不等于0.3

0.1+0.2-0.3=5.55111512312578e-17为什么... 0.1+0.2-0.3=5.55111512312578e-17为什么 展开
 我来答
从哲妍8H
2020-06-03 · TA获得超过222个赞
知道答主
回答量:408
采纳率:0%
帮助的人:28万
展开全部
原因在于在JS中采用的IEEE 754的双精度标准,计算机内部存储数据的编码的时候,0.1在计算机内部根本就不是精确的0.1,而是一个有舍入误差的0.1。当代码被编译或解释后,0.1已经被四舍五入成一个与之很接近的计算机内部数字,以至于计算还没开始,一个很小的舍入错误就已经产生了。这也就是 0.1 + 0.2 不等于0.3 的原因。
另外要注意,不是所有浮点数都有舍入误差。二进制能精确地表示位数有限且分母是2的倍数的小数,比如0.5,0.5在计算机内部就没有舍入误差。所以0.5 + 0.5 === 1
有时两个近似值进行计算的时候,得到的值是在JS的近似范围内的,于是就可以得到正确答案。至于哪些值计算后能得到正确结果,哪些不能,我们也不需要去记。
如何避免这样的问题?
最好的方法就是我们想办法规避掉这类小数计算时的精度问题就好了,那么最常用的方法就是将浮点数转化成整数计算。因为整数都是可以精确表示的。
通常的解决办法 就是 把计算数字 提升 10 的N次方 倍 再 除以 10的N次方。一般都用 1000 就行了
淦寻芹03x
2011-10-11 · TA获得超过1187个赞
知道小有建树答主
回答量:900
采纳率:0%
帮助的人:954万
展开全部
你用的excel算的吧?默认的小数位数不同 结果也不同 事实上,0.1可能=0.1000000000000123456789 但由于精度不同,略去了 答案精度高,就把它列出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
论宝宝4093
2011-10-11 · TA获得超过6万个赞
知道大有可为答主
回答量:3.7万
采纳率:0%
帮助的人:2557万
展开全部
算错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式