2011-09-06 40 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