我试图从中获得可读的结果:
const rate = (648735n * 10n**36n) / 124124124n;
我得到这个结果:
rate = 5226502142323276335871663432645856n
但是结果应该是这样的:
5226500000000000000000000000000000n
有什么办法可以实现这一点吗?类似于
Math.floor
:) 但对于 BigInt。
专门用于格式化输出(作为字符串),您可以使用
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 的幂进行比较来检测该值的范围。