数学计算中的Javascript问题

数学计算中的Javascript问题,javascript,floating-accuracy,Javascript,Floating Accuracy,为什么在javascript中执行此操作时,会得到以下结果: 1234.56*10=12345.599999999 应该是123456。我怎样才能避开这个问题 谢谢。浮点不是精确的,因为在它们的范围内[或者更精确地说在任何范围内]都有ifinite数字,并且只有有限的位数来存储这些数据 看一看。JS中的所有数字都是由浮点内部定义的,如果需要,可以去掉不太重要的数字 (10000000000000000000000000000 + 1) == 100000000000000000000000000

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

1234.56*10=12345.599999999

应该是123456。我怎样才能避开这个问题


谢谢。

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


看一看。

JS中的所有数字都是由浮点内部定义的,如果需要,可以去掉不太重要的数字

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

众所周知,javascript经常在数字中丢失位。所以要小心处理

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

简单的解决办法是这样做:

var answer = parseInt(1234.56 * 10);
或者只使用Math.round?

另一个简单的解决方案:

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

结果是:12345.6,是的。。。它适用于十进制数。

不太清楚使用jQuery是什么意思。jQuery是一个DOM操作扩展,而不是一个数学库。你能发布一个代码示例吗?同样,它是12345.6-你必须乘以100才能得到123456。参见