首页 > 解决方案 > 使用 toLocaleString 在括号中显示数字以表示负值

问题描述

我一直在尝试根据国家/地区更改 AngularJS 应用程序中的数字,并使用.toLocaleString以下函数在整个应用程序中使用函数

numberValueTransformation(value) {
    if (value === 0 || value === undefined) {
      return 0;
    }
    const currencyLocale = this.UserPreferences.getCountryLocale().replace(/fr-FR/g, 'de-DE');
    const currencyCode = this.UserPreferences.getCountryCode();
    return Number(value).toLocaleString(currencyLocale, {
      // style: 'currency',
      currency: currencyCode,
      minimumFractionDigits: 2
    });
}

上面的函数工作得很好,但我需要在整个应用程序的括号中显示负值。我们可以修改.toLocaleString以获得括号中的负值还是我需要手动更改整个应用程序?我得到的价值是 123456689 美元。但是如果一个负值我得到-$ 123456789,但在这里我想要的值是($ 123456789)<---括号代表减号。

标签: javascriptangularjsecma

解决方案


您可以自己连接检查,而不是直接返回结果。对正数进行转换,如果原始值小于 0,则用括号括起来:

var absValue = Math.abs(value);
var returnString = Number(absValue).toLocaleString(currencyLocale, {
    // style: 'currency',
    currency: currencyCode,
    minimumFractionDigits: 2
});

return value < 0 ? '(' + returnString + ')' : returnString;

推荐阅读