Pregunta

Uso de la función de JavaScript

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

Cuando dado el número 4294967296 devuelve se devuelve la función 18446744073709552000

Todo el mundo sabe que la verdadera respuesta es 18446744073709551616: -)

Creo que esto es hasta Con el redondeo en mi máquina de 32 bits. Sin embargo, este script sería dar la respuesta correcta en una máquina de 64 bits? Alguien ha probado esto?

¿Fue útil?

Solución

ChrisV- ver este post . También es más fácil para las personas a evaluar su pregunta escribiendo el siguiente JavaScript directamente en el cuadro de texto URL del navegador:

javascript:4294967296*4294967296

Otros consejos

Javascript utiliza 64 bits aritmética de punto flotante interno para los cálculos numéricos. - los resultados que se ven son un reflejo de esto, y se happene independientemente de la arquitectura subyacente

¿qué pasa con este

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

Aquí es un ejemplo más basado en BigInteger.js .

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top