Question

Utilisation de la fonction JavaScript

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

Lorsqu'on donne le numéro 4294967296, la fonction renvoie 18446744073709552000 est retournée

Tout le monde sait que la vraie réponse est 18446744073709551616 :-)

Je suppose que c'est à l'arrondi sur ma machine 32 bits. Cependant, ce script donnerait-il la bonne réponse sur une machine 64 bits? Quelqu'un a-t-il essayé cela?

Était-ce utile?

La solution

Chrisv- voir ce post. Il est également plus facile pour les gens d'évaluer votre question en tapant le JavaScript suivant directement dans la zone de texte URL du navigateur:

javascript:4294967296*4294967296

Autres conseils

JavaScript utilise une arithmétique à point flottante à 64 bits en interne pour les calculs numériques - les résultats que vous voyez sont le reflet de cela, et se réalisera quelle que soit l'architecture sous-jacente.

Et ça

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

Voici un autre exemple basé sur Biginteger.js.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top