数学计算的Javascript问题

时间:2011-10-16 21:48:59

标签: javascript floating-accuracy

为什么如果我在javascript中执行此操作,我会得到以下结果:

1234.56 * 10 = 12345.599999999999

它应该是123456.我怎样才能解决这个问题?

感谢。

4 个答案:

答案 0 :(得分:3)

浮点不精确,因为在它们的范围内[或在任何范围内都有更精确的数字],并且只有有限数量的位来存储这些数据。

查看what every programmer should know about floating point arithmetics

答案 1 :(得分:3)

另一个简单的解决方案:

parseFloat((1234.56 * 10).toPrecision(12))

,结果将是:12345.6,YES ...它适用于十进制数字。

答案 2 :(得分:1)

正如其他人所说,浮点等等。

简单的解决方案是做这样的事情:

var answer = parseInt(1234.56 * 10);

或者只使用Math.round?

答案 3 :(得分:0)

JS中的所有数字都由float内部定义,如果需要,则删除不太重要的数字。

(10000000000000000000000000000 + 1) == 10000000000000000000000000000
// this will return true

javascript以数字中经常丢弃比特而闻名。所以要小心处理