2011-09-06 37 views
2

可能重复:
limit the decimal place in javascript is not working for 4.45678765e-6限制JavaScript中的小数位数不在这个数学代码中工作?

这不会给我答案我会得到一个科学的日历。

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

如果值有指数,甚至可以限制小数位吗?

+0

欢迎来到Stack Overflow。您可以使用工具栏按钮格式化源代码。这次我为你做了。 –

+0

谢谢!!!!!!!!! – 0x499602D2

回答

8

4.45678765e-6装置4.45678765 * 10^(-6)或,所以

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

错误的指数。 4.45678765e-6等于4.45678765 * 10^-6。修复它为你 –

+0

谢谢@Alex Bagnolini – bjornd

1

4.45678765e-6 * 10000仍小于1(它的4.45678765e-2实际上),因此调用圆形或地板会使其为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)) 
1

JavaScript有一个toPrecision功能,将允许你指定显著数字而不是小数

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

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