Domanda

Utilizzando la funzione JavaScript

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

Quando dato il numero 4294967296 restituisce 18446744073709552000 viene restituita la funzione

Tutti conoscono la vera risposta è 18446744073709551616: -)

Credo che questo è quello a con arrotondamento sulla mia macchina a 32 bit. Tuttavia, sarebbe questo script dare la risposta giusta su una macchina a 64 bit? Qualcuno ha provato questo?

È stato utile?

Soluzione

ChrisV- vedere questo post . Anche più facile per le persone a valutare la tua domanda digitando il seguente JavaScript direttamente nella casella di testo URL del browser:

javascript:4294967296*4294967296

Altri suggerimenti

JavaScript utilizza aritmetica in virgola mobile a 64 bit internamente per i calcoli numerici -. I risultati visualizzati sono un riflesso di questo, e sarà happene indipendentemente dall'architettura sottostante

Che dire di questo

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

Ecco un altro esempio sulla base di BigInteger.js .

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top