使用 Intl.NumberFormat,是否可以有 3 个非零的 minIntegerDigits?

发布于 2025-01-11 04:21:41 字数 663 浏览 0 评论 0原文

使用科学记数法时,写1000g等于1kg。

当使用具有紧凑符号和货币样式的 Intl.NumberFormat 时,它会自动从 £999 切换到 £1k。

当同时使用属性 minIntegerDigits=3 时,我预计它会等到三个整数数字进行切换,因此它将从 99,999 英镑到 10 万英镑。 相反,它添加了前导零,从 999 英镑变为 001,000 英镑。

是否可以实现以下格式:

£99,999.99 then £100.00k

£9,999.99k then £10.00M

£9,999.99M then £10.00B

? 或者至少是类似的东西。

我的想法是将数字除以我需要的整数大小,然后结合 formatToParts 的输出,从一个中获取“文字”部分,从另一个中获取“整数”和“分数”部分。但就是感觉太乱了。 (伪代码,类似的东西)

numericalParts = formatToParts(value/1000)
semanticalParts = formatToParts(1000)

return numericalParts.integer + numericalParts.fraction + semanticalParts.literal + semanticalParts.currency


When using scientific notation, writing 1000g is the same as 1kg.

When using Intl.NumberFormat with the compact notation and currency style, it switches automatically from £999 to £1k.

When using also the property minIntegerDigits=3, I expected it to wait until having three integer digits to switch, so it would be from £99,999 to £100k.
Instead it adds leading zeros, switching from £999 to £001k.

Is it possible to achieve the following formats:

£99,999.99 then £100.00k

£9,999.99k then £10.00M

£9,999.99M then £10.00B

?
Or at least something similar.

My thought was to divide the number to get it in the integer size I need, then combine the output of formatToParts taking the "literal" from one and the "integer" and "fraction" parts from another. But it just feels too messy.
(pseudo-code, something like)

numericalParts = formatToParts(value/1000)
semanticalParts = formatToParts(1000)

return numericalParts.integer + numericalParts.fraction + semanticalParts.literal + semanticalParts.currency


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文