首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用toLocaleString表示负值时,在括号中显示数字

使用toLocaleString表示负值时,在括号中显示数字
EN

Stack Overflow用户
提问于 2019-02-22 02:49:04
回答 2查看 3.4K关注 0票数 2

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

代码语言:javascript
复制
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) <-括号表示负。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-22 03:00:19

您可以自己连接检查,而不是直接返回结果。在正数上执行转换,如果原始值小于0,则将其括在括号中:

代码语言:javascript
复制
var absValue = Math.abs(value);
var returnString = Number(absValue).toLocaleString(currencyLocale, {
    // style: 'currency',
    currency: currencyCode,
    minimumFractionDigits: 2
});

return value < 0 ? '(' + returnString + ')' : returnString;
票数 4
EN

Stack Overflow用户

发布于 2021-05-18 00:09:01

对于这一点,可以看看numbro.js库https://numbrojs.com/,其中有一个功能可以根据需要格式化括号中的负值。代码的工作方式如下所示

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54814202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档