Есть ли способ правильно умножить два 32-битных целых числа в Javascript?
Когда я пробую это из C, используя long long
, я получаю следующее:
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 битами.
Есть ли способ получить правильный ответ? (Я использую Mozilla js-1.8.5 на x86_64 Fedora 15, если это имеет значение.)