3 回答
TA贡献1946条经验 获得超3个赞
以下原始答案中引用的参考文献是错误的。这里是一个内置的功能,这一点,而这正是德皇以下建议:toLocaleString
所以你可以这样做:
(1234567.89).toLocaleString('en') // for numeric input
parseFloat("1234567.89").toLocaleString('en') // for string input
下面实现的功能也有效,但根本不是必需的。
(我想也许我很幸运,发现它在2010年有必要,但没有。根据这个更可靠的参考,toLocaleString自ECMAScript第3版[1999]以来一直是标准的一部分,我相信它意味着它本来可以支持IE 5.5。)
原始答案
根据该参考文献,没有用于向数字添加逗号的内置函数。但该页面包含一个如何自己编写代码的示例:
function addCommas(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
编辑: 要采用另一种方式(将带逗号的字符串转换为数字),您可以执行以下操作:
parseFloat("1,234,567.89".replace(/,/g,''))
TA贡献1725条经验 获得超7个赞
如果要本地化千位分隔符,分隔符和小数分隔符,请执行以下操作:
// --> numObj.toLocaleString( [locales [, options] ] ) parseInt( number ).toLocaleString();
您可以使用多种选项(甚至是具有后备的区域设置):
number = 123456.7089;result = parseInt( number ).toLocaleString() + "<br>";result += number.toLocaleString( 'de-DE' ) + "<br>";result += number.toLocaleString( 'ar-EG' ) + "<br>";result += number.toLocaleString( 'ja-JP', { style : 'currency', currency : 'JPY', currencyDisplay : 'symbol', useGrouping : true} ) + "<br>";result += number.toLocaleString( [ 'jav', 'en' ], { localeMatcher : 'lookup', style : 'decimal', minimumIntegerDigits : 2, minimumFractionDigits : 2, maximumFractionDigits : 3, minimumSignificantDigits : 2, maximumSignificantDigits : 3} ) + "<br>";var el = document.getElementById( 'result' );el.innerHTML = result;
<div id="result"></div>
添加回答
举报