3

大家都知道,因爲它是SO最關心的問題之一,所以我遇到了舍入錯誤的問題(這實際上不是錯誤,我很清楚)。 而是說明我的觀點,我會給出我有什麼可能的數字爲例,其輸入我希望能夠獲得:有沒有辦法在Javascript中截斷科學記數法數字?

比方說

var a = 15 * 1e-9; 
alert(a) 

輸出

1.5000000000000002e-8 

我希望能夠取得1.5e-8,但我不能只乘以10e8,舍入10e8,因爲我不知道它是否是e-8或e-45或其他。

所以基本上我想能夠獲得1.5000002部分,應用toFixed(3)並放回指數部分。

我可以轉換成字符串和解析,但它只是看起來不正確...

任何想法?


(我提前道歉,如果你覺得這是很多重複的,但我無法找到一個類似的問題,只有相關的)

蓋爾

回答

8

可以使用toPrecision方法:

var a = 15 * 1e-9; 
a.toPrecision(2); // "1.5e-8" 
+1

這個,如文件所述,給你一個(typeof a ==)「string」;非常適合輸出。如果你想得到一個「數字」,你可以做`var b = 1 * a.toPrecision(2);`小心計算中間的四捨五入。 – 2011-01-28 17:21:33