JavaScript精度丢失问题。
-
javaScript中臭名昭著的BUG就是
0.1+0.2 !== 0.3
,因为精度问题,导致所有浮点数运算都是不安全的。 -
正如下面的计算结果,它们并不是我们所预想的:
0.1 + 0.2 = 0.30000000000000004
1 - 0.9 = 0.09999999999999998
-
虽然很多人知道这个浮点数误差这个问题的,可是却不知道背后的原理以及解决方案。今天我们就通过上面两个例子看看JavaScript浮点数误差问题背后的原理以及解决方案吧!
-
那我们先来看看本文将包含什么内容
-
为什么JavaScript的所有数值都统称为Number
-
是什么导致的浮点数计算误差问题(IEEE 754是什么)
-
那遇到浮点数计算应该如何解决
-
最后讲讲JavaScript值的范围
-
为什么JavaScript中所有的数值类型都称为Number类型
我们通过ECMAScript看看。
在ECMAScript标准中我们可以看到对Number类型的定义是这样的,使用IEEE 754格式表示整数和浮点值(Ja