numbers - Intl.NumberFormat 没有做数百万正确
问题描述
所以我有一张大货币价值表,我正在使用国际数字格式化程序,如下所示:
const formatCurrency = new Intl.NumberFormat("en-IN", {
style: "currency",
currency: "USD",
minimumFractionDigits: 0,
currencyDisplay: "narrowSymbol"
})
但是当数字大于 5 位时,输出会在错误的位置放置一个“,”。像这样:2,75,450 美元。应该是 275,450 美元。或者像这样:14,75,099 美元。应该是 1,475,099 美元。
我浏览了文档并没有找到任何东西,但我很可能会遗漏一些东西。
帮助?
解决方案
您将印度英语指定为区域设置 ( en-IN
)。
$14,75,099
在印度是正确的格式,代表 140 万 75,000 和 99,因为它们使用不同的单位($1,475,099
这是错误的,因为百万不是那里常用的单位)。
您可以在Wikipedia上阅读有关印度编号系统的更多信息:
印度编号系统在印度次大陆用于表示大数。术语 lakh (100,000) 和 crore (10,000,000) 是最常用的术语(即使在英语中,例如在称为印度英语的本地变体中),用于表示系统中的大量数字。例如,150,000 卢比在印度被称为“15 万卢比”,写成 1,50,000 卢比;30,000,000(三千万)卢比被称为“3 千万卢比”,写成 3,00,00,000 卢比,用逗号在千位、十万位和千万位。
[...]
印度编号系统使用与国际规范不同的分隔符。印度编号系统不像在国际系统中那样将数字按三位分组,而是将最右边的三位数字分组在一起(直到百位),然后按两位数分组。因此,一万亿将被写为 10,00,00,00,00,000 或 10 kharab(或 10 亿卢比)。这使得使用系统术语可以方便地阅读数字。
(强调我的。)
如果这是一个错误并且您不想要印度语言环境,那么您需要更改您的代码以使用 egen-US
或en-UK
代替en-IN
.
推荐阅读
- c# - .Net5.0 中的 XML 内联验证找不到 xsd
- mkdocs - 如何在 mkdocs.yml 中使用 build_date_utc 作为版权年份
- javascript - 如何使用 removeEventListener 停止 EventListener
- c# - 获取用户公共电子邮件的方法是什么(C#,Graph API)?
- spring - 尽管 ping 了,但 Spring 会话在长时间休息 API 调用后过期
- django - get() 返回了多个 Log —— 它返回了 2!在基于类的视图中 django
- typo3-7.6.x - TYPO3 7.6 多语言 - 作为 BE 用户在 FE 中看不到隐藏页面
- javascript - 如果在javascript中的数字长度
- javascript - 在 NodeJS 中使用跟踪像素来跟踪页面视图、用户活动的最佳方式是什么?
- ios - 使用日期选择器类 ActionSheetDatePicker.init 时出错