有没有办法在JavaScript中正确乘以两个32位整数?有没有办法在JavaScript中正确乘以两个32位整数?
当我使用long long
试试这个由C我得到这个:
printf("0x%llx * %d = %llx\n", 0x4d98ee96ULL, 1812433253,
0x4d98ee96ULL * 1812433253);
==> 0x4d98ee96 * 1812433253 = 20becd7b431e672e
但是从Javascript的结果是不同的:
x = 0x4d98ee97 * 1812433253;
print("0x4d98ee97 * 1812433253 = " + x.toString(16));
==> 0x4d98ee97 * 1812433253 = 20becd7baf25f000
的尾随零使我怀疑,JavaScript有一个奇怪的有限整数分辨率介于32位和64位之间。
有没有办法得到正确答案? (我在x86_64 Fedora 15上使用Mozilla js-1.8.5以防万一)
供参考:它实际上是围绕[53个比特](http://groups.google.com/group/twitter-api-announce/browse_thread/thread/6a16efa375532182?pli=1)。 – Thai 2011-06-04 03:31:25
你可以使用[Math.imul](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul) – 2016-03-25 13:52:05