Вопрос

Использование функции JavaScript

function squareIt(number) {
   return number * number;
}

При данном номере 4294967296 функция возвращается 18446744073709552000

Все знают, что реальный ответ-18446744073709551616 :-)

Я думаю, это нужно с округление на моей 32-разрядной машине. Однако этот скрипт даст правильный ответ на 64 -битной машине? Кто -нибудь пробовал это?

Это было полезно?

Решение

Chrisv- Смотрите этот пост. Анкет Кроме того, людям легче оценить ваш вопрос, введя следующий JavaScript непосредственно в текстовое поле URL -адреса браузера:

javascript:4294967296*4294967296

Другие советы

JavaScript использует 64 -битную арифметику с плавающей запятой внутренне для численных расчетов - результаты, которые вы видите, являются отражением этого и будут счастливы независимо от базовой архитектуры.

что насчет этого

function squareIt(number){
return Math.pow(number,2)
}

Вот еще один пример, основанный на Biginteger.js.

alert(bigInt(4294967296).square());
<script src="https://cdnjs.cloudflare.com/ajax/libs/big-integer/1.6.40/BigInteger.min.js"></script>

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top