有沒有辦法在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