我使用javascript用逗号格式化数字,它工作得非常好。
但现在问题是如果一个值为负值,例如: -792004
它返回的输出如下: - ,792,004 ,这是逗号的开头。
如何修改此方法?
这是我的代码:
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;
}
答案 0 :(得分:3)
我知道的最简单的方法是帮助你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;
答案 1 :(得分:1)
试试这个:
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
。然后它将数字更改为其绝对值(Math.abs(number)
)。最后,它返回prefix
的值。