angularjs 使用toLocaleString为负值显示括号中的数字

kuuvgm7e  于 2022-11-21  发布在  Angular
关注(0)|答案(3)|浏览(193)

我一直在尝试根据国家更改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)〈---括号表示减号。

vi4fp9gy

vi4fp9gy1#

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

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

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

ccrfmcuu2#

js库https://numbrojs.com/中有一个特性,可以根据请求格式化括号中的负值。

console.log(
numbro(-123456.78).formatCurrency({
    thousandSeparated: true,
    mantissa: 2,
    negative: "parenthesis" // This does what you want
}))
<script src="https://cdn.jsdelivr.net/npm/numbro@2.3.1/dist/numbro.min.js"></script>

还有许多其他格式选项,请参阅https://numbrojs.com/format.html#currency

yvt65v4c

yvt65v4c3#

您可以直接使用.toLocaleString函数,如下所示:

function numberValueTransformation(value) {

    if (value === null || value === undefined) {
      return 'some special value like N/A';
    }

    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,
      currencySign: 'accounting', // this is the key
      minimumFractionDigits: 2
    });
}

相关问题