为什么如果我在javascript中执行此操作,我会得到以下结果:
1234.56 * 10 = 12345.599999999999
它应该是123456.我怎样才能解决这个问题?
感谢。
答案 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以数字中经常丢弃比特而闻名。所以要小心处理