二进制浮点数和四舍五入错误
实数有无数个,但JS通过浮点数的形式,只能表示有限个数,JS表现的常常是真实值的近似表示。
二进制无法表示类似于0.1这样的十进制数字,只能机器近似于0.1,看如下代码:
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>3.1.4 二进制浮点数和四舍五入错误</title></head><body><h1>3.1.4 二进制浮点数和四舍五入错误</h1><script>var x=.3-.2;document.write("var x=.3-.2;<br>");var y=.2-.1;document.write("var y=.2-.1;<br>");document.write("x,y:"+x+","+y+"<br>");document.write("x==y:"+(x==y)+"<br>");document.write("x==.1:"+(x==.1)+"<br>");document.write("y==.1:"+(y==.1)+"<br>");</script></body>
</html>
页面效果:
以上x,y值非常接近,计算结果胜任大多数的计算任务,只有比较两个值是否相等的时候才会出现。