回答
JavaScript並沒有提供這個功能本身,但也有一些第三方的功能在其周圍可以做你想做的。
請注意,無論使用哪種方法,您都應該小心使用結果字符串進行顯示 - 在將小數點轉換爲逗號後,它不會是Javascript中的有效數字值。
我能提供的最快解決方案是使用由phpJS人員編寫的number_format()
函數。他們已經實現了Javascript版本的一些常用的PHP函數,包括number_format()
,並且這個函數將完全按照你想要的來執行。
在這裏看到的鏈接:http://phpjs.org/functions/number_format
我不會理會考慮整個phpJS庫(很多是價值可疑反正),但只要抓住頁面上顯示的20餘線功能鏈接到上面並粘貼到您的應用程序中。
如果你想要一個更靈活的解決方案,有許多JS函數可以模擬來自C的printf()
函數。關於這個問題已經有一個很好的問題了。看到這裏:JavaScript equivalent to printf/string.format
希望有所幫助。
每個瀏覽器都支持Number.prototype.toLocaleString()
,這是一種旨在從數字中返回本地化字符串的方法。但是,規範將其定義如下:
生成一個字符串值,該值表示根據主機環境的當前語言環境約定格式化的數字的值。該功能是實現相關的,允許但不鼓勵它返回與
toString
相同的內容。
實施依賴意味着供應商如何看待結果,並導致互操作性問題。
Internet Explorer(IE 5.5到IE 9)與您想要的最接近,並以貨幣形式格式化數字 - 千位分隔符並固定在2位小數位。
Firefox(2+)使用千位分隔符和小數位格式化數字,但僅限適用。
Opera,Chrome & Safari輸出與toString()
相同 - 沒有千位分隔符,只有在需要時才輸入小數位。
解決方案
我想出了下面的代碼(基於an old answer of mine)嘗試和規範的結果,如Internet Explorer的方法工作:
(function (old) {
var dec = 0.12 .toLocaleString().charAt(1),
tho = dec === "." ? "," : ".";
if (1000 .toLocaleString() !== "1,000.00") {
Number.prototype.toLocaleString = function() {
var neg = this < 0,
f = this.toFixed(2).slice(+neg);
return (neg ? "-" : "")
+ f.slice(0,-3).replace(/(?=(?!^)(?:\d{3})+(?!\d))/g, tho)
+ dec + f.slice(-2);
}
}
})(Number.prototype.toLocaleString);
這將使用瀏覽器的內置如果可用,則爲本地化,而在其他情況下,優雅地降級到瀏覽器的默認區域設置。
由於支持正確的本地化,因此我正在爲此解決方案投票。我們中的一些人正在使用小數點逗號而不是點:-) – 2011-12-22 22:31:54
+1 - 只是一個警告:需要修正才能正確處理負數。目前-100返回 - ,例如100.00。 – 2013-03-24 05:51:19
只是要清楚。看到你需要調用的問題(-100).toLocaleString() – 2013-03-24 22:36:28
我知道使用的NumberFormat此解決方案,但它是必要的值轉換爲字符串。 https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/NumberFormat
// Remove commas
number = "10,000.00".replace(/,/g, '');
// Create a NumberFormat type object
var formatter = new Intl.NumberFormat('de-DE', {
minimumFractionDigits: 2
});
// Apply format
console.log(formatter.format(number));
output:10.000,00
- 1. 使用javascript格式化數字
- 2. 如何在JavaScript中格式化數字?
- 3. 如何格式化數字使用jquery
- 4. 如何使用JavaScript進行數字格式化?
- 5. 數字格式化javascript
- 6. 格式化數字與JavaScript
- 7. 如何使用JavaScript格式化時間?
- 8. 如何用javascript格式化數字(以Safari的方式工作)
- 9. 如何使用jstl格式標籤格式化數字?
- 10. Go - 如何格式化數字數字
- 11. JSON使用javascript格式化
- 12. 如何使用Javascript格式化字符串?
- 13. 使用數字格式插件來循環格式化數字
- 14. 如何使用jQuery使用String.localeFormat()將數字格式化爲貨幣格式?
- 15. 如何格式化JavaScript中的`onblur`函數的數字?
- 16. 如何格式化數字? php函數
- 17. 如何使用PHP格式化數組?
- 18. 字符串格式化Javascript
- 19. 如何使用本地化字符串格式化字符串?
- 20. 使用vba格式化Excel中的字段數字格式
- 21. 使用逗號格式化html數字
- 22. 使用numer.js格式化大數字
- 23. jqGrid的數字格式化使用
- 24. 格式化使用數字的ToString()
- 25. 使用DecimalFormat格式化數字
- 26. 使用awk格式化數字
- 27. 使用PHP格式化數字
- 28. FieldPosition使用NumberFormat格式化數字
- 29. 使用String.Format進行數字格式化
- 30. 使用Javascript格式化十六進制數字
你的意思是? http://stackoverflow.com/questions/51564/javascript-culture-sensitive-currency-formatting – 2011-05-04 12:04:03
可能重複? http://stackoverflow.com/questions/4843691/javascript-regex-replacing-the-last-dot-for-a-comma – Pav 2011-05-04 12:04:10
@Shadow Wizard:不,這是不一樣的。我無法使用該腳本得到1,50,000.00的結果爲1.50.000,00 .. – 2011-05-04 12:13:57