有没有办法在Javascript中正确地乘以两个32位整数?
当我从C中尝试使用时,long long
我得到了这个:
printf("0x%llx * %d = %llx\n", 0x4d98ee96ULL, 1812433253,
0x4d98ee96ULL * 1812433253);
==> 0x4d98ee96 * 1812433253 = 20becd7b431e672e
Run Code Online (Sandbox Code Playgroud)
但是从Javascript来看结果是不同的:
x = 0x4d98ee97 * 1812433253;
print("0x4d98ee97 * 1812433253 = " + x.toString(16));
==> 0x4d98ee97 * 1812433253 = 20becd7baf25f000
Run Code Online (Sandbox Code Playgroud)
尾随零使我怀疑Javascript具有奇怪限制的整数分辨率,介于32位和64位之间.
有没有办法得到正确的答案?(如果重要的话,我在x86_64 Fedora 15上使用Mozilla js-1.8.5.)