2016-05-17 186 views
1

Hy guys, 我有一種情況,希望將數字四捨五入到小數點後兩位。我會舉一個例子和我試過的。四捨五入至小數點後兩位

可以說我有15.07567爲了完善它,我所做的:

price = Math.round(15.07567 * 100)/100; 

//我得到15.08

但是,這提出了一個問題,如果我們有一個結束機智0(例如15.10)數字我們需要兩位小數。

price = Math.round(15.10 * 100)/100; 

//15.1

嗯,所以我試圖用toFixed()

price = Math.round(15.10 * 100)/100; 
total = price.toFixed(2); 

//我得到 「15.10」,這很好,但它返回一個字符串,並可能出現所以我試圖解決這個問題:

price = Math.round(15.10 * 100)/100; 
total = price.toFixed(2); 
Number(total) //or parseFloat(total) 

//我得到15.1和圍繞在我的圈子?

+0

如果它的零點JS放下它......你必須選擇一個。 – JordanHendrix

+1

嗯,'15.10 == 15.1',除非你想要一個字符串的結果.. – SuperSaiyan

回答

0

正如喬丹所說。當JavaScript顯示數字時,它會將0刪除。我只是按照原樣存儲該值,並在顯示它時,通過.toFixed(2)運行它,以便它正確顯示。或者甚至更好,找到一個貨幣格式化程序,因爲這似乎是你想要顯示並在視圖方面使用它。

這是一個很好的貨幣格式化腳本。

Number.prototype.formatMoney = function(c, d='.', t=','){ 
    var n = this, 
    c = isNaN(c = Math.abs(c)) ? 2 : c, 
    d = d == undefined ? "." : d, 
    t = t == undefined ? "," : t, 
    s = n < 0 ? "-" : "", 
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
    j = (j = i.length) > 3 ? j % 3 : 0; 
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 
}; 

然後你就可以用這個代碼中使用面向對象的方式:

price.formatMoney(2); 

或者,如果你想指定數千小數點分隔符爲歐洲。

price.formatMoney(2, ',', '.'); 
+0

謝謝你們。我想那是要走的路。 Sace我的價值一個字符串,當我需要它只顯示它使用toFixed() –

+0

沒問題,我扔了一個JS貨幣格式化腳本以及將妥善格式化整個數字。 –

0

如果你想顯示在右邊的0,你需要表示字符串數...

0

始終保持你的號碼,當你顯示它們通過toFixed運行他們得到所需顯示格式,所以你將有一個字符串格式的現成值。由於該方法是必需的,因此被設計用於顯示目的,該函數返回一個準備好的字符串而不是一個數字。