为了账号安全,请及时绑定邮箱和手机立即绑定

浮点数精度问题,为什么0.1===0.1 5+0.1 = 5.1?

浮点数精度问题,为什么0.1===0.1 5+0.1 = 5.1?

紫衣仙女 2019-01-30 16:28:32
在js中,会经常的遇到浮点数精度问题(0.1+0.2),我们都知道是因为转换成二进制的时候产生无限循环小数,而js的尾数部分只能保存52位,出现截取取一舍零造成的;但是现在深挖一下:、const s = 0.1console.log(s)//s=0.1    console.log(0.1+5)//5.1、上述代码,s确准确的等于0.1,并没有出现精度不准确的情况,资料上说明,超过16位会使用toPrecision(16) 进行运算,进而会有 s=0.1的情况,那为什么0.1+0.2 不会做toPrecision的运算呢?而对于第二种情况,我的猜测是对于整数和小数的相加,js会做toPrecision(m+1),m为小数的10的-m次方;以上是我在研究js精度问题产生的两个问题,能够查到的博客上都对这两个方面没有说明,希望晓得js精度处理机制的大神帮助解答一下,谢谢大家!补充:对于toPrecision(m)方法什么时候调用,更重要的是 m 的值是如何确定的?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 1196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信