前言
在面试或者实际开发过程中我们可能都碰到过对数字进行运算,但是有时候的运算结果又与我们预期的结果不相符!例如:0.1 + 0.2 按照我们计算应该是0.3但是在js中计算得到的结果缺不等于0.3,造成这个的原因就是js在运算的过程中精确丢失了。由于这个问题自己也在网上找了看了,所以总结记录下自己在学习过程中遇到困惑。
js中计算导致精度缺失的实例
我们可以看到前面三个计算的结果都产生了精度缺失问题,但是后两个又是正常的那是怎么回事呢?在这之前我们需要了解JavaScript是如何表示数字的
javascript是如何表示数字
JavaScript使用Number类型表示数字(整数和浮点数),遵循IEEE754标准通过64位来表示一个数字,通过图表看一下数字在内存中的表示
图片文字说明:
- 第0位:符号位,0表示整数,1表示负数(s)
- 第1位到第11位:储存指数部分(e)
- 第12位到第63位:储存小数部分(即有效数字 f)
补充:js最大安全数是 Number.MAX_SAV