2011-07-08 65 views
1

當然是一個愚蠢的問題,請原諒我。我的客戶希望十進制數字以五位數字顯示。例如:100.34或37.459。我正在用val.toPrecision (5);完成此項工作;然而,當我的數字變得非常小時,我就不再得到我想要的東西。例如,如果我的號碼是0.000347,它顯示0.00034700。現在,我明白爲什麼這樣做了,但我不知道如何讓它顯示0.0003。有什麼想法嗎?Javascript編號格式

+2

退房http://stackoverflow.com/questions/610406/javascript-printf-string-format,首先回答問題的sprintf的鏈接 – mrk

回答

2

我們的問題是與數字萊s明顯低於1。因此,抓住他們,並分別處理它們

function SetPrecisionToFive(n){ 
    return (n > 1) ? n.toPrecision (5) : (Math.round(n * 1e4)/1e4).toString(); 
} 
1

您可以使用toFixed方法來完成此操作。例如:(0.000347).toFixed(4)

+0

因爲他想將toFixed改變100.34298至100.34 ? –

+1

jQuery for'toFixed',你在開玩笑嗎? – katspaugh

+0

爲什麼你需要使用jQuery來使用'toFixed'? –

5
Math.round(0.000347 * 1e4)/1e4 

或用toFixed

Number.prototype.toNDigits = function (n) { 
    return (Math.abs(this) < 1) ? 
     this.toFixed(n - 1) : 
     this.toPrecision(n); 
}; 

http://jsfiddle.net/HeQtH/6/

-1

的JavaScript toFixed()函數將截斷小編號,以一個固定的小數精度,例如:

var num = .0000350; 
var result = num.toFixed(5); // result will equal .00003 
+0

現在做'(100.34).toFixed(5)'。 – katspaugh

+0

@katspaugh此代碼片段將是有條件的......並不意味着涵蓋所有情況 – Kyle