Javascript浮动添加

时间:2010-11-12 22:09:04

标签: javascript

  

可能重复:
  Is JavaScript's Math broken?

<html>
<body>

<script type="text/javascript">
 var w = 0;
 var weight1 = parseFloat("0.6");
 var weight2 = parseFloat("0.3");
 w = weight1 + weight2;

 document.write("total weight: " + w);
</script>

</body>
</html>

为什么打印0.8999999999999999而不是0.90000000

5 个答案:

答案 0 :(得分:4)

因为数字9/10不能在基数2中干净地表示,就像数字1/3不能在基数10中清晰地表示一样。

答案 1 :(得分:1)

答案 2 :(得分:0)

制作浮点数的方法,无法准确表示某些值。这是这种数据类型的限制,你可以做很少甚至没有什么可以解决它,你必须只是预测到这一点,并利用圆形或其他东西。

http://en.wikipedia.org/wiki/Floating_point

答案 3 :(得分:0)

简单的舍入错误。浮点数不精确。这使得比较更加复杂。例如。如果(my_float == 3.0)总是会失败。

答案 4 :(得分:-1)

要回答您的问题 - 浮点数的精确度与RAM允许的精度相同。如果您创建一个浮动数字1 - 它实际上可能是1.000000000000000000001

显然,您的解决方案包括舍入数字或使用整数