Y007-精度丢失问题
精确丢失问题
为什么0.1+0.2!=0.3
js 是弱类型的语言,在计算时会将浮点数转化为二进制数进行计算,因为js中不能无限存储小数点后的数,最多52位,所以计算出来的值有误差, 最后再将二进制转为浮点数时,就会有误差。
如果需要判断0.1+0.2是否等于0.3要怎么做?
方法1
将小数转换为整数再进行相加判断。
方法二
用 0.3-(0.1+0.2) 判断结果是否小于number的最大安全数
为什么0.1+0.2!=0.3
js 是弱类型的语言,在计算时会将浮点数转化为二进制数进行计算,因为js中不能无限存储小数点后的数,最多52位,所以计算出来的值有误差, 最后再将二进制转为浮点数时,就会有误差。
将小数转换为整数再进行相加判断。
用 0.3-(0.1+0.2) 判断结果是否小于number的最大安全数