2016-06-07 31 views
1

我有輔助函數格式化我的錢值成英鎊和便士:格式物有所值成英鎊和便士

formatMoney: function(10496.470000000001){ 
    return value.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "1,"); 
}, 

給我:

11,496.471,001,001,001

有沒有一種方法,我可以格式化這個準確地變成磅和便士? 。所以它讀取,£11,496.471p

+0

因此,whats的 「001001001」?有什麼價值? – putvande

+5

請參閱http://stackoverflow.com/questions/149055/how-can-i-format-numbers-as-money-in-javascript – Fred

+1

您需要添加'.toFixed(2)' – putvande

回答

0

除了前面提到的toFixed方法調用之外,要替換的第二個參數應該是「$ 1」而不是「1」。此外,您轉換爲某個數字有點脆弱。這是我嘗試在糾正這些問題:

function convert(value){ 
 
    return "£"+((Number(value)||0).toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"))+"p"; 
 
} 
 

 
console.log(convert(10496.470000000001));

-1

規則表達式不關心你在你需要將輸入轉化通過小數已經有2位小數:

return value.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "1,"); 
      ^^^^^^^^^^ 

function convert(value){ 
 
    return value.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, "1,"); 
 
} 
 

 
console.log(convert(10496.470000000001));

+0

爲什麼「10496.470000000001」格式到'11,496.47'? PS。我沒有倒下。 – Fred

+0

那就是你想要的嗎?還是需要額外的'1'? – putvande

+0

我不是OP,但我懷疑OP在腳本中也有錯誤。除非我錯過了一些東西,他們希望增加一千以及格式到貨幣顯示。 – Fred