回答
更新(7年后)
参考在引用下面的原始答案是错误的。有是一个内置的功能这一点,而这正是kaiser以下建议:toLocaleString
所以,你可以这样做:实施以下工程
(1234567.89).toLocaleString('en') // for numeric input
parseFloat("1234567.89").toLocaleString('en') // for string input
的功能,太多,但根本没有必要。
(我想也许我会得到幸运,发现它必要早在2010年,但没有。根据这一more reliable reference,的toLocaleString自ECMAScript的第三版[1999],已经成为标准的一部分我相信,意味着它会一直早在IE 5.5的支持。)
原来的答案
根据this reference没有内置的功能添加逗号的数字。但是,页面包括如何自行编码它的一个例子:
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,''))
PHP.js有一个功能可以做到这一点,称为number_format。如果您熟悉PHP,它的工作原理是exactly the same way。
第一个链接跟在JS实现之后的PHP版本。这很有用。 – 2014-04-08 15:11:58
// thousand separates a digit-only string using commas
// by element: onkeyup = "ThousandSeparate(this)"
// by ID: onkeyup = "ThousandSeparate('txt1','lbl1')"
function ThousandSeparate()
{
if (arguments.length == 1)
{
var V = arguments[0].value;
V = V.replace(/,/g,'');
var R = new RegExp('(-?[0-9]+)([0-9]{3})');
while(R.test(V))
{
V = V.replace(R, '$1,$2');
}
arguments[0].value = V;
}
else if (arguments.length == 2)
{
var V = document.getElementById(arguments[0]).value;
var R = new RegExp('(-?[0-9]+)([0-9]{3})');
while(R.test(V))
{
V = V.replace(R, '$1,$2');
}
document.getElementById(arguments[1]).innerHTML = V;
}
else return false;
}
如果是关于本地化千位分隔符,分隔符和小数点分隔符,去与以下内容:
// --> 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>
关于MDN info page的详细信息。
编辑:评注@I like Serena增加了以下内容:
要支持的浏览器使用非英语语言环境,我们仍然希望英语格式,使用
value.toLocaleString('en')
。也适用于浮点。
我只能说哇。美丽。 – pimbrouwers 2014-03-03 20:59:32
+1不重新发明车轮。 – 2014-03-20 14:18:01
假设浏览器的语言环境始终是你想要的... – sibidiba 2014-04-15 11:09:27
试图与一个正则表达式(不回调)来处理这个我目前的能力失败我缺少一个负的在Javascript向后看...从来没有少这里的另一个在大多数作品简洁替代一般情况 - 通过忽略匹配索引出现在句点索引之后的匹配来计算任意小数点。
function format(num){
var n = num.toString(), p = n.indexOf('.');
return n.replace(/\d(?=(?:\d{3})+(?:\.|$))/g, function($0, i){
return p<0 || i<p ? ($0+',') : $0;
});
}
测试用例:
format(100) // "100"
format(1000) // "1,000"
format(1e10) // "10,000,000,000"
format(1000.001001) // "1,000.001001"
此语法图是否已在regex101.com上创建? – 2017-04-19 23:26:36
@GeroldBroser https://regexper.com – Emissary 2017-04-20 05:46:02
有一个不错的jQuery插件数量:https://github.com/teamdf/jquery-number
它允许就是你改变你喜欢的格式的任何号码,与十进制数字选项和分隔符小数和千:
$.number(12345.4556, 2); // -> 12,345.46
$.number(12345.4556, 3, ',', ' ') // -> 12 345,456
你可以用它直接输入字段,这是更好的内部,采用与上述相同的选项:
$("input").number(true, 2);
,也可以使用选择应用到整个组DOM元素:
$('span.number').number(true, 2);
我不喜欢任何这里的答案,所以我创建了一个功能,使得w为我而言。只是想分享,以防其他人发现它有用。
function getFormattedCurrency(num) {
num = num.toFixed(2)
var cents = (num - Math.floor(num)).toFixed(2);
return Math.floor(num).toLocaleString() + '.' + cents.split('.')[1];
}
我用这个:
function numberWithCommas(number) {
return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
来源:link
''123452343267.0505'.replace(/ \ B(?=(\ d {3})+(?!\ d))/ g,“,”); “123,452,343,267.0,505”' - 注意小数点后面的逗号。 – hippietrail 2017-10-03 00:53:34
所有你需要做的就是真的this:
123000.9123.toLocaleString()
//result will be "123,000.912"
不幸的是它取决于你的平台。有一些''toLocaleString()'不添加逗号,或缺少标准中的其他功能。很容易检查'toLocaleString'的存在,但不检查其符合性。 – hippietrail 2017-10-03 00:56:04
您可以使用JavaScript。下面是代码,它只会accept
数字和一个dot
这里是JavaScript
<script >
function FormatCurrency(ctrl) {
//Check if arrow keys are pressed - we want to allow navigation around textbox using arrow keys
if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
return;
}
var val = ctrl.value;
val = val.replace(/,/g, "")
ctrl.value = "";
val += '';
x = val.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
ctrl.value = x1 + x2;
}
function CheckNumeric() {
return event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 46;
}
</script>
HTML
<input type="text" onkeypress="return CheckNumeric()" onkeyup="FormatCurrency(this)" />
number = 123456.7089;
result = parseInt(number).toLocaleString() + "<br>";
result = number.toLocaleString('pt-BR') + "<br>";
var el = document.getElementById('result');
el.innerHTML = result;
<div id="result"></div>
您可以添加一些描述以便op和其他人可以理解此代码如何实际解决问题。谢谢 – 2017-09-26 13:58:37
var number = 35002343;
console.log(number.toLocaleString());
的参考,你可以点击这里 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
- 1. 格式千位分隔符
- 2. 千位分隔符的数字格式
- 3. 千位分隔符格式字符串与浮游
- 4. kendoNomeric格式不带千位分隔符
- 5. 在iPython中设置千位分隔符,而不使用字符串格式
- 6. 使用千位分隔符的空格
- 7. 千位分隔符在Python
- 8. QSpinBox千位分隔符
- 9. 千位分隔符printf
- 10. 添加千位分隔符
- 11. Apache poi - 千位分隔符
- 12. MYSQL - 千位分隔符
- 13. 使用千位分隔符格式化数字Smarty PHP
- 14. d3格式的数字不显示千位分隔符
- 15. 使用撇号格式的数字作为千位分隔符
- 16. mySQL格式的数字输出,千位分隔符
- 17. 如何使用精简格式将数字格式化为千位分隔符?
- 18. 千位分隔符在JavaScript中使用正则表达式
- 19. 使用千位分隔符格式化多个数据帧列
- 20. 如何在Arduino上格式化长添加千位分隔符
- 21. “编辑文本和TextView”格式与千位分隔符(,)在android
- 22. 如何在Python中为千位分隔符格式化?
- 23. Inno设置格式与千位分隔符
- 24. 在整个文档中格式化整数千位分隔符
- 25. 格式ItemTemplate GridView钱项目到千位分隔符ASP.NET?
- 26. 千分隔符php
- 27. NSNumberFormatter千分隔符
- 28. 格式字符串数据绑定,千位分隔符和支架没有货币符号
- 29. 格式逗号分隔字符串
- 30. 如何将千位分隔符添加到c#中的数字字符串?
http://bytes.com/topic/c-sharp/answers/248039-formatcurrency-equiv – bevacqua 2010-09-20 16:41:18
我想你”将找到你需要在那里:) http://stackoverflow.com/questions/610406/javascript-printf-string-format – Jad 2010-09-20 16:41:55
'如何在JavaScript中使用逗号作为千位分隔符打印数字:http:// stackoverflow。 com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript – 2016-12-08 15:44:00