格式数字以逗号分隔值

Format numbers in comma separated value

本文关键字:分隔 数字 格式      更新时间:2023-09-26

我正在使用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

相关文章: