Js基础---浮点数精度

234 阅读1分钟

JavaScript数字的二进制表示

JavaScript使用Number类型表示数字(整数和浮点数),遵循 IEEE 754 标准 通过64位来表示一个数字

  • 第0位:符号位,0表示正数,1表示负数(s)
  • 第1位到第11位:储存指数部分(e)
  • 第12位到第63位:储存小数部分(即有效数字)f

运算过程

1.进制转换

由于IEEE 754尾数位数限制,需要将后面多余的位截掉。

2.对阶运算

由于指数位数不相同,运算时需要对阶运算 这部分也可能产生精度损失。

解决精度问题

1.将数字转成整数

2.三方库

1).Math.js

2).big.js

参考:

0.57 * 100 === 56.99999999999999 之谜

从0.1+0.2=0.30000000000000004再看JS中的Number类型

0.1 + 0.2不等于0.3?为什么JavaScript有这种“骚”操作?

【JS 进阶】你真的掌握变量和类型了吗

也许你知道 0.1 + 0.2 === 0.3 为 false,但是 1.1 + 0.2 === 1.3 呢?