2015-05-07 391 views
2

我試圖用javascript創建一個函數,顯示所有帶有兩個小數點的數字,並每三位數字(1,000 10,000 100,000等)添加逗號。格式化逗號和小數點後的數字用Javascript

起初,我有這樣的:

var formatNumber = function(num) { 
    return parseFloat((num).toFixed(2)).toLocaleString(); 
}; 

這工作得很好,但有一個例外。

1.2!= 1.20在最終輸出中。它只是顯示爲1.2

但其他一切都很好。 124.5879697 = 124.59,10000 = 10,000和10586.357 = 10586.36

問題是最終輸出將顯示爲金錢,因此顯示10000爲10,000美元罰款。但1.2美元顯示1.2美元看起來有點關閉。

爲了解決這個問題我嘗試添加了以下修改:

var formatNumber = function(num) { 
    return parseFloat((Math.round(num*100)/100)).toFixed(2).toLocaleString(); 
}; 

此進行所有的東西到小數點後兩位,這是很好的,但它似乎已經去激活的toLocaleString因爲現在沒有任何顯示逗號。

我正在尋找使用純JavaScript而不是jQuery。似乎關於這個話題有很多關於這個或那個問題的js問題,但是沒有把兩者結合起來。

謝謝。

+0

你可以測試,看看有多少數字是小數點後的工作,如果它只有一個,增加一個0到它的結束? –

+0

嘗試這個正則表達式追加0如果小數點後的單個數字: 'parseFloat((num).toFixed(2))。toLocaleString()。replace(/ \。([0-9])$ /,「。$ 10」 )' –

回答

3

這似乎

var f = function(num) { 
    return parseFloat(num).toFixed(2).toLocaleString(); 
}; 
+0

這不適用於整數。看到[fiddle](http://jsfiddle.net/razs3mjb/) –

相關問題