在 JavaScript 中将浮点数与 BigInt 相乘?[复制]

Multiplying float with BigInt in JavaScript? [duplicate]

提问人:user2640145 提问时间:8/22/2023 最后编辑:jonrsharpeuser2640145 更新时间:8/23/2023 访问量:69

问:

通过使用本网站

例如,我可以计算

x = 0.28
y = 1e18
x * y = 280,000,000,000,000,000

我怎样才能在 javascript 中做到这一点,而 x 可以是任何数字,包括 ints,而 y 可以是任何其他大数字,如 1e12 或其他任何数字。

JavaScript 乘法 biginteger bigint

评论

0赞 Coloured Panda 8/22/2023
BigInt不能与其他类型混合使用。您期望的结果是什么?
0赞 user2640145 8/22/2023
我希望得到与我链接的网站相同的结果

答:

1赞 Barmar 8/22/2023 #1

不能在计算中将 BigInt 与其他类型的混合,因此需要将 BigInt 用于所有操作数。

因此,不要将浮点数乘以 ,而是乘以 并除以 。0.2828n100n

console.log((BigInt(1e18) * 28n) / 100n)

评论

0赞 user2640145 8/23/2023
正如我所说,这些数字在运行时可能是未知的
0赞 Barmar 8/23/2023
您需要要求以此表单提供输入。如果 0.28 代表百分比,请询问百分比而不是分数,因此他们输入并在代码中除以 100。28
0赞 Barmar 8/23/2023
或者计算小数点后的位数,然后按比例放大。如果输入 ,则用于转换它,然后除以 。.285BigInt(Math.round(input*1000))1000n