此函数假设提交给它的内容是字符串,带有小数点和小数点后两位。要先将您的数字转换为该格式,请使用此方法。
然后,此函数将正确地用逗号分隔数字。例如,2345643.00 将返回 2,345,643.00
function CommaFormatted(amount) {
var delimiter = ","; // replace comma if desired
var a = amount.split('.',2)
var d = a[1];
var i = parseInt(a[0]);
if(isNaN(i)) { return ''; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3) {
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) { a.unshift(n); }
n = a.join(delimiter);
if(d.length < 1) { amount = n; }
else { amount = n + '.' + d; }
amount = minus + amount;
return amount;
}
PHP 中有没有类似的功能?
http://us3.php.net/manual/en/function.number-format.php
number_format();
哦哦,很棒的代码片段。找了很久了。
这是我的做法
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;
}
Jack 你的函数好多了,谢谢。帖子中的函数充满了错误。
这个脚本怎么样。
有没有办法在这个计数器中的数字之间插入逗号或空格?
kasa=new Date(2008 ,12 ,60 ,30 ,01);
setInterval(function(){
with(Math){
var w=floor(((new Date())-kasa)/1000),lr,dr,mr,
l=floor(w/31536000),d=floor((lr=w%31536000)/86400),
g=floor((dr=lr%86400)/3600),m=floor((mr=dr%3600)/60),
s=floor(mr%60);
document.getElementById(‘money’).innerHTML=
(l?l+’ l., ‘:”)+d+’ dni,’+g+’ godz., ‘
+m+’ min., ‘+s+’ sek.’;
}
},1000);
setInterval(function(){
document.getElementById(‘MoneyCounter’).innerHTML=
((new Date())-kasa);
},130);
这是同一件事用一行代码实现。如果有人能做得更好,请分享。
不能做得更短了,但我可以修改它使其接受数字参数!
function commas(str) {
return (str+””).replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
嗯,用一种有点 hackish 的方式来处理小数点。 ;-)
function commas(str) {return (str+””).replace(/.(?=(?:[0-9]{3})+\b)/g, ‘$&,’);
function format(input)
{
var num=input.value.replace(/[^\d]/g,”);
if(num.length>3)
num = num.replace(/\B(?=(?:\d{3})+(?!\d))/g, ‘-‘);
input.value=num;
}
你好,Chris,
如果金额为 2200,那么你的变量“d”会报错为未定义变量,脚本将不会执行,这个脚本只在金额为 2200.00 时才会有效,所以我修改了你的脚本并在我的网站上使用了它;) 以下是修改后的代码,可以解决这个问题。
function CommaFormatted(amount) {
var delimiter = ","; // 按需替换逗号
var a = amount.split('.',2)
var d = a[1];
var i = parseInt(a[0]);
if(isNaN(i)) {
return '';
}
var minus = '';
if(i < 0) {
minus = '-';
}
i = Math.abs(i);
var n = new String(i);
var a = [];
while(n.length > 3) {
var nn = n.substr(n.length-3);
a.unshift(nn);
n = n.substr(0,n.length-3);
}
if(n.length > 0) {
a.unshift(n);
}
n = a.join(delimiter);
if(d) {
if(d.length < 1) {
amount = n;
} else {
amount = n + '.' + d;
}
} else {
amount = n + ".00"
}
amount = minus + amount;
return amount;
}
上帝保佑“.toLocaleString()”
@Yashar Imanlou: 不幸的是,toLocaleString 方法尚未得到广泛支持,请查看 https://caniuse.cn/#search=locale。
我想在 html 中使用它,如何添加它?
document.getElementById(“demo”).innerHTML = commer();
或者使用 documen.wrte = “12,345”;
我需要像这样操作:将 12345 转换为 12,345
numeral.js ( http://numeraljs.com )
这个看起来最简单/最快……
function commas(str) {
return str.replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
但是,请不要笑,我承认我不是程序员。只是想在一个页面上做一个小小的更改——添加逗号。我已经玩了 40 分钟了,还是没搞定。
我试图获取一个我计算出的变量并将其用在页面上(“calculatedHours”),并用逗号显示。我完全不知道这是一件这么大的事……
总之,请用 6 岁孩子能理解的方式解释一下。我应该把它插入函数的哪个位置?
我认为应该是
function commas(calculatedHours) {
return str.replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
然后
document.write(calculatedHours)
但是不行……我应该替换什么才能用逗号显示变量 calculatedHours???
天啊,真是令人沮丧。以前我也在页面上玩过内容(HTML),还以为加几行 Java 代码不会太难。结果却难到爆。我从来没尝试过——任何设计(等等)我都外包,但这次制作一个简单的页面却花费了大量时间。
仍然卡住了。我只想用逗号显示几个数字以方便阅读。有一个变量(实际上是几个,但我希望如果我掌握了方法,就可以重复操作)。
这是该部分代码(我在单词 S C R I P T 中添加了空格,以便它在这里显示——这是唯一的区别)
< s c r i p t >
document.write(“截至今天, “)
document.write(calculatedHours)
document.write(” 小时过去了…”)
< / s c r i p t >
它输出
截至今天,3965 小时过去了…
我希望它输出
截至今天,3,965 小时过去了…
难道真的没有简单的方法来做这件看似简单的事情吗???
我复制过来的每一行代码都无效……我知道我肯定错过了一些“当然”的东西,这都是因为我无知,但有人可以给我提供几行代码来完成这个任务吗?
谢谢
有人可以快速解决这个问题吗?
我仍然试图做一件看起来很简单的事情……
我已经计算出一个变量(“calculatedHours”),并尝试用逗号显示它。
我认为应该是
function commas(calculatedHours) {
return str.replace(/.(?=(?:.{3})+$)/g, ‘$&,’);
}
然后
document.write(calculatedHours)
……没有效果。有人看到问题了吗?有人可以发布几行有效的代码吗?
谢谢…….
不用了。
以下代码有效,供其他可能会遇到这个问题的人参考。
<
script type=”text/javascript”>
function numberWithCommas(x) { // Zamaria
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, “,”);
}
document.write(numberWithCommas(calculatedHours))
我使用此函数在 div 元素中生成一个不断增长的数字。 http://jsfiddle.net/obysrnm2/
有人能建议将生成器与分隔符结合起来吗?我的实现似乎都报错了。
**sign**… N00bs…
"1,234,567,890"
所有这些都是错误的概念。一般来说,程序员/开发人员不应该“格式化”数字。
正确概念
客户端(浏览器)应该从操作系统读取“区域设置”,并根据该设置格式化数字。这主要应该发生在“输入”字段以及用某些标签包装的内联文本中。
例如:
<number>123456</number> => 123.456
<number decimals="2">123456789E-4</number> => 12.345,68
绝对同意!我对编程并不陌生,但我对 Web 编程很陌生。我简直不敢相信如此简单且广泛需要的功能还没有得到解决!对于我们正在进行的(相当大的)项目,我们想到的最佳解决方案是使用 jQuery 输入掩码 (https://github.com/RobinHerbots/Inputmask)
有什么理由不直接使用 number.toLocaleString()?它允许你设置自己的分隔符等等,但默认情况下它只是将数字作为字符串返回,并在正确的位置添加逗号。
Javascript 有一种名为 toFixed() 的方法,它可以格式化你的数字,使它们包含逗号,甚至允许你添加两位小数。因此,如果你有一个像 12345678.90 这样的数字,toFixed() 将将其转换为 12,345,678.90。查看 https://w3schools.org.cn/jsref/jsref_tofixed.asp,了解如何使用它。
使用 numObj.toLocaleString() 怎么样?
Javascript 现在支持 toLocaleString() 方法,这意味着你不需要你的代码片段。抱歉!不过代码不错。