奇怪的数学与舍入和乘法

时间:2013-06-18 15:59:19

标签: javascript math rounding

我有一个奇怪的问题。我正在从网络音频API中获取数字,我得到的是一个常量列表:

3.1051260268969075e-28等等

我想围绕这个数字,但使用:

Math.round(magAmount);

始终返回0. magAmount是我存储数字的变量。另一个奇怪的是,如果我将数字乘以5,我得到一个低于原始值的值,在这种情况下为1.5525630134484537e-27。

有什么想法吗?

感谢。

4 个答案:

答案 0 :(得分:5)

这个数字是5倍。

e-28小于e-27

答案 1 :(得分:4)

请注意,e-28*10^-28,因此代码中没有任何异常。

由于这个数字很小,所以舍入它肯定会返回0

答案 2 :(得分:3)

Math.round()将舍入到下一个整数,因此舍入0.0000000000..00001(您正在做的)将舍入为0。

e-27也比e-28大,所以你的乘法是正确的

答案 3 :(得分:1)

圆到什么精度?如果你想要

3.1051260268969075e-28 - > 3.1e-28然后

Math.round(3.1051260268969075e-28 * 1.0e + 29)* 1.0e-29