gpt4 book ai didi

javascript - 我为什么要使用 Math.imul()?

转载 作者:数据小太阳 更新时间:2023-10-29 03:48:01 24 4
gpt4 key购买 nike

它比 * 表达式表现更好吗?为什么?

This article描述它对像 Emscripten 这样的项目很有用。这是为什么?

谢谢

最佳答案

精简版

Math.imul(a,b) 将 a 和 b 相乘,就好像它们是 32 位有符号整数一样。 (a*b)|0 做同样的事情,但对于大数可能会给出不正确的结果。

长版

只要您想将两个数字相乘,并且您希望乘法就像这两个数字是 32 位有符号整数一样,您就可以使用 Math.imul。也就是说,您需要整数乘法模 2^32。

通常,您可以通过对结果使用按位运算符来获得此效果。例如,(0xffffffff + 1)|0 非常正确地给出了 0。但是,这不适用于乘法。 (0x7fffffff * 0x7fffffff)|0 给我们 0,当两个数字的 32 位乘法给我们 1 时。失败的原因是精度。 Number 类型是 IEEE754 double float ,尾数为 53 位。当您尝试使用大于 2^53 的数字时,您会开始失去精度。您可以通过在浏览器中运行 Math.pow(2,53) == Math.pow(2,53)+1 来测试它。

当您在 Javascript 中将两个 32 位数字相乘并使用按位运算符 chop 结果时,中间结果可能大于 2^53,因此可能不正确,这意味着最终结果当然也会不正确。

关于javascript - 我为什么要使用 Math.imul()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com