[Javascrpt]轉換數字成含千分位的文字

[Javascrpt]轉換數字成含千分位的文字

實務上常常會需要把金額或數量以含有千分位顯示在前端, 像是10000顯示為10,000。

用後端c#可以很簡單處理這樣的文字:

//先取得轉成currency後會產生的CurrencySymbol
var ri = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol;

//用string.Format轉成currency後,再把CurrencySymbol取代掉
var currency = string.Format("{0:c}", 100000.01).Replace(ri, "");

但在前端javascript就比較麻煩,這邊提供一個簡易的轉換function

function toCurrency(num){
    var parts = num.toString().split('.');
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    return parts.join('.');
}

也可以在prototype直接加入一個轉換function使用

if (!Number.prototype.currency) {
    Number.prototype.currency = function () {
        var parts = this.toString().split('.');
        parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, '.');
        return parts.join('.');
    };
}

測試結果

第一種方法可以再加上判斷輸入的parameter是否為有效的數字,或是可轉換成數字的文字,比較彈性。

第二種方法則是限定數字才轉換。

用哪種方式就看實際需求。

參考資料

https://stackoverflow.com/questions/14467433/currency-formatting-in-javascript