格式数字以逗号分隔值
Format numbers in comma separated value
我正在使用javascript用逗号格式化数字,它工作得很好。
但现在的问题是,如果一个值是负的,例如:-792004
它返回的输出如下:-, 792004 即逗号在开头。
如何修改这个方法?
下面是我的代码:function Comma(number) {
number = '' + number;
if (number.length > 3) {
var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0, mod)) : '');
for (i = 0; i < Math.floor(number.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += number.substring(mod + 3 * i, mod + 3 * i + 3);
else
output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
} else return number;
}
我知道最简单的方法是toLocaleString()
方法对数字的帮助:
var x = 10033001;
var y = -10033001;
console.log(x.toLocaleString(), y.toLocaleString());
但是为了纠正你的代码,你可以去掉带有Math.abs
的数字符号,然后加上带有Math.sign
的数字符号。
var sign = Math.sign(number);
number = Math.abs(number);
// Do the conversion
return (sign < 0) ? ("-" + output) : output;
试试这个:
const comma = function(number) {
const prefix = number < 0 ? '-' : ''
number = String(Math.abs(number))
if (number.length > 3) {
const mod = number.length % 3
let output = (mod > 0 ? (number.substring(0,mod)) : '')
for (let i = 0; i < Math.floor(number.length / 3); i++) {
if (mod === 0 && i === 0)
output += number.substring(mod+ 3 * i, mod + 3 * i + 3)
else
output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return prefix + output
} else {
return prefix + number
}
}
如果数字为负,则将-
分配给prefix
。然后它将number改为它的绝对值(Math.abs(number)
)。最后,它返回值为prefix
。
相关文章:
- Javascript-Regex,用于逗号分隔的字母数字
- 输入只允许6位数字,逗号分隔后,允许角js中的另外6位数字
- 需要Selenium IDE中逗号分隔值中的数字
- 在另一个由非字母数字字符分隔的字符串中搜索(任何)字符串
- 向Javascript输出中添加逗号分隔的数字
- javascript正则表达式,用于逗号分隔的数字重复
- 将字符串分隔成数字值
- Regex,用于匹配用逗号分隔的特定数字
- 如何使用css将数字格式化为逗号分隔
- 如何仅替换第一个数字(用连字符分隔)
- 如何在 JavaScript 中用逗号分隔的
- 正则表达式在开始时将字符串与(逗号分隔的)数字匹配,并拆分为数字和其余
- 对具有点分隔数字的属性的对象数组进行排序
- 向数字添加百分之一位,该数字可以逗号或句点分隔
- Javascript - 正则表达式,用于字母,数字,下划线逗号分隔的标签
- 在 JavaScript 中,括号中的数字/函数以逗号分隔
- 正则表达式 javascript 用于检查逗号分隔的数字
- 使用正/负整数和浮点数验证逗号分隔的数字
- 用于JavaScript验证逗号分隔数字的RegEx
- 用逗号分隔数字来分隔 flot 中的轴