代码之家  ›  专栏  ›  技术社区  ›  kal

Javascript浮点加法[重复]

  •  3
  • kal  · 技术社区  · 14 年前

    可能重复:
    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.89999999999999而不是0.90000000

    5 回复  |  直到 8 年前
        1
  •  4
  •   cdhowie    14 年前

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

        3
  •  0
  •   LostInTheCode    14 年前

    使用浮点数的方式,某些值无法精确表示。这是这种数据类型的一个限制,您几乎无能为力来修复它,您只需预测这一点,并利用round或其他东西。

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

        4
  •  0
  •   winwaed    14 年前

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

        5
  •  -1
  •   Mikhail    14 年前

    为了回答你的问题-浮点的精度是你的内存所能允许的。如果您创建一个浮点数1-它实际上可能是1.000000000000001

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