JS浮点数的研究

泪湿孤枕 提交于 2020-01-30 19:32:27

为什么0.1 + 0.2 得到的是 0.30000000000000004

console.log( 0.1 + 0.2 == 0.3);//false

在js中所有的整数和小数都是以Number形式储存在字节bit中,而javaScipt中Number采用的是64位的双精度浮点型.

而0.1和0.2转为二进制时:

//0.1转为二进制0.1 =0.0 0011 0011 0011 0011...(0011无限循环)//0.2转为二进制0.0011 0011 0011 0011 0011...(0011无限循环)//转为二进制时,0.1和0.2的数字实际上是无限循环的.

在加法计算时,Number实际上是以零后52位进行运算,有误差值.

var d = 0.1 + 0.2;console.log(d.toString(2)); console.log(d);//0.0100110011001100110011001100110011001100110011001101(默认54位)//0.30000000000000004

 

解决方法

toFixed方法来固定保留小数位,固定保留小数位。

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!