将 bigint 下限为可读值

问题描述 投票:0回答:1

我试图从中获得可读的结果:

const rate = (648735n * 10n**36n) / 124124124n;

我得到这个结果:

rate = 5226502142323276335871663432645856n

但是结果应该是这样的:

5226500000000000000000000000000000n

有什么办法可以实现这一点吗?类似于

Math.floor
:) 但对于 BigInt。

javascript bigint
1个回答
0
投票

专门用于格式化输出(作为字符串),您可以使用

Intl.NumberFormat
。示例:

> var nf = new Intl.NumberFormat('en-US', {maximumSignificantDigits: 3});
> nf.format(12345678n)
< '12,300,000'

请注意如何“从左侧”计算有效数字。

如果您需要更多灵活性,您可以根据十的幂来设计自己的机制,例如:

> var divisor = 10n ** 9n;  // a billion
> var big = 123456789012n;
> `About ${big / divisor} billions`
< 'About 123 billons'
> `Rounded down: ${(big / divisor) * divisor}`
< 'Rounded down: 123000000000'

请注意,这从“右侧”开始计算零。如果您需要从左侧计算有效数字,您可以首先通过将其与一系列(预先计算的?)10 的幂进行比较来检测该值的范围。

© www.soinside.com 2019 - 2024. All rights reserved.