IEEE754

IEEE754

EcmaScript规范定义Number的类型遵循IEEE754

在 IEEE754 中,双精度浮点数采用 64 位存储,其中1个符号位,11个指数位,52个小数位

符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度

存储结构如下:

计算方式如下:

范围:±[2^(-1023), 2^1024]

为什么0.1+0.2!==0.3

ES规范定义 Number 类型遵循 IEEE-754,IEEE-754由64位浮点数表示,其中1位符号位、11位指数位、52位小数位,精度由小数位控制,因为位数有限所以肯定无法精确表示每一个数字。将十进制数字转化为二进制时,如果无法精确表示就会产生误差,所以这就是不等的原因。

解决方式:

1
parseFloat((0.1+0.2).toFixed(10)) === 0.3  // true

参考

https://blog.csdn.net/qq_34629352/article/details/106455790


IEEE754
http://example.com/2022/11/20/IEEE754/
Author
John Doe
Posted on
November 20, 2022
Licensed under