js浮点运算的坑

1,js浮点型小数点运算的问题。

这么简单的计算,js竟然算的是错的,究其原因,是因为js小数在内存存储方式的原因。

具体原因:

JavaScript 里的数字是采用 IEEE 754 标准的 64 位双精度浮点数,第一位存符号,0表示正,1表示负,

1到11位存整数部分,剩下的存小数。

当发生计算的时候,

0.1和0.2先转换为二进制,IEEE 754 标准存储的时候,小数部分存储的是后52位,计算后,转换为十进制的时候,会进行截取。

这个时候就会发生偏移,得到的值就会产生误差。

不光浮点型,如果整型数值超过内存的位数后,进行计算的时候也会发生偏移误差

最后,不光js其他的语言也大都用的是IEEE 754 标准存储,只是大部分语言都封装的有方法,输出的值会进行处理,避免输出错误。

 

posted @ 2019-05-06 17:05  咫尺灵犀  阅读(413)  评论(0编辑  收藏  举报