限制JavaScript中的小数位不适用于此数学代码?

时间:2011-09-06 12:11:50

标签: javascript rounding

  

可能重复:
  limit the decimal place in javascript is not working for 4.45678765e-6

这并没有给出我在科学日历上得到的答案。

var myNum = Math.floor (4.45678765 * 10000)/10000;
document.write (x);

如果值具有指数,是否可以限制小数位?

3 个答案:

答案 0 :(得分:8)

4.45678765e-6表示4.45678765 * 10^(-6)0.00000445678765,所以

4.45678765e-6 * 10000 == 0.0445678765
Math.round(0.0445678765) == 0

答案 1 :(得分:1)

4.45678765e-6 * 10000仍小于1(实际上是4.45678765e-2),因此调用round或floor会使其为0,将0除以10000仍为0.在这种情况下,您需要乘以除以10 ^ 10得到正确答案,但这不是一般解决方案。一种方法是(伪代码):

counter = 0
while x < 100000:
    x = x * 10
    counter = counter + 1

x = Math.floor(x / 10)
x = x / (10 ^ (counter - 1))

答案 2 :(得分:1)

Javascript具有toPrecision功能,允许您指定有效数字而不是小数位

var x = 4.45678765e-6;
console.log(x.toPrecision(4)); // 0.000004457

console.log(x.toFixed(4)); // 0.0000