如何在 Intl.NumberFormat 中获得正数的前导“+”?

Cod*_*bie 7 javascript ecma typescript angular

我正在使用 Intl.NumberFormat 将数字类型转换为 Angular2 中 typescript/javascript 中的格式化字符串。我想要一个本机解决方案,这是理想的,但我需要为正数包含一个前导加号。

如果这是不可能的Intl.NumberFormat怎么回事难道我这样做本身

@Input() amount : number;

drawLabel() {
   var formatter = new Intl.NumberFormat("en-GB",
                                         {
                                            style: "decimal",
                                            minimumFractionDigits:1
                                         });
   ...

   this.label = formatter.format(this.amount)
}
Run Code Online (Sandbox Code Playgroud)

小智 8

在 2019 年,你这样做:

var formatter = new Intl.NumberFormat("en-GB", { style: "decimal",  signDisplay: 'always' });

console.log(formatter.format(-100.123456));
// output -100.123
console.log(formatter.format(100.123456));
// output +100.123
console.log(formatter.format(0));
// output +0.
Run Code Online (Sandbox Code Playgroud)


Qwe*_*tiy 5

尝试这样的事情:

class FormatterWithSign extends Intl.NumberFormat {
  constructor(...args) {
    super(...args);
  }
  
  format(x) {
    var res = super.format(x);
    return x < 0 ? res : "+" + res;
  }
}

var formatter = new FormatterWithSign("en-GB", { style: "decimal", minimumFractionDigits:1 });

console.log(formatter.format(-100.123456));
console.log(formatter.format(100.123456));
console.log(formatter.format(0));
Run Code Online (Sandbox Code Playgroud)