Pergunta

Usando a função JavaScript

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

Quando recebeu o número 4294967296, a função retorna 18446744073709552000 é retornada

Todo mundo sabe que a resposta real é 18446744073709551616 :-)

Eu acho que isso é para arredondar na minha máquina de 32 bits. No entanto, esse script daria a resposta certa em uma máquina de 64 bits? alguem ja tentou isso?

Foi útil?

Solução

Chrisv- Veja este post. Também é mais fácil para as pessoas avaliar sua pergunta digitando o seguinte JavaScript diretamente na caixa de texto URL do navegador:

javascript:4294967296*4294967296

Outras dicas

O JavaScript usa a aritmética flutuante de 64 bits internamente para cálculos numéricos - os resultados que você vê são um reflexo disso, e o Happene, independentemente da arquitetura subjacente.

Que tal isso

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

Aqui está mais um exemplo baseado em Biginteger.js.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top