JS采用 IEEE-754浮点数表示法(几乎所有现代编程语言所采用),这是一种二进制表示法,可以精确的表示分数,比如1/2,1/8和1/1024。
我们常采用的分数都是十进制分数1/10,1/100等。二进制浮点数表示法,并不能精确的表示类似0.1这样的数字。
JS的数字具有足够的精度,并可以极其近似于0.1。但事实上,数字不能精确表述的确带来一些问题。
var x = .3 - .2; // 0.09999999999999998
var y = .2 - .1; // 0.1
x == y; // false,值不等
如上述代码,在任何使用二进制浮点数的编程语言中都会有这个问题。