Frage

Verwenden der JavaScript -Funktion

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

Bei der Nummer 4294967296 wird die Funktion 18446744073709552000 zurückgegeben

Jeder weiß, dass die wahre Antwort 18446744073709551616 :-) ist

Ich denke, dies ist zu rund um meine 32-Bit-Maschine zu runden. Würde dieses Skript jedoch die richtige Antwort auf eine 64 -Bit -Maschine geben? Hat jemand das versucht?

War es hilfreich?

Lösung

Chrisv- Siehe diesen Beitrag. Außerdem leichter für Personen, Ihre Frage zu bewerten, indem Sie das folgende JavaScript direkt in das Textbox der Browser -URL eingeben:

javascript:4294967296*4294967296

Andere Tipps

JavaScript verwendet 64 Bit -Floating Point Arithmetic Innen für numerische Berechnungen - die Ergebnisse, die Sie sehen, spiegeln dies wider und wird unabhängig von der zugrunde liegenden Architektur passiert.

Was ist damit?

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

Hier ist ein weiteres Beispiel basierend auf BigInteger.js.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top