版权声明: https://blog.csdn.net/weixin_39823527/article/details/80754788
js采用IEEE-754浮点数表示法(几乎所有现代编程语言采用),这是一种二进制表示法,可以精确的表示分数如 1/2、1/4、1/8和1/1024。但遗憾的是我们经常用的分数(特别是金融方面)都是十进制分数1/10、1/100等。二进制浮点数表示法并不能精确表示累0.1这简单的数字。
js中的数字具有足够的精度,并可以即期近似于0.1。但数字不能精确表述的确带来一些问题。如
var x = 0.3-0.2
var y = 0.2-0.1
x == y //false两值不相等
由于舍入误差。0.3-0.2的近似差值使劲上并不等于02.-0.1的近视差。但x和y的值非常接近彼此和最终的正确值。
注意:这种情况并不是js中才会出现,在任何采用二进制浮点数的编程语言中都会出现这个问题。