Calcolatrice esatta per interi molto grandi — somme, sottrazioni, prodotti, divisioni e potenze senza limiti di cifre
Strumento gratuito che calcola senza errori operazioni fra interi enormi. Servendosi del tipo BigInt di JavaScript, esegue con esattezza addizioni, sottrazioni, moltiplicazioni, divisioni intere con quoziente e resto ed elevamenti a potenza anche oltre 9.007.199.254.740.991, cioè due elevato alla cinquantatreesima meno uno.
Perché oltre due elevato alla cinquantatreesima compaiono errori
Le calcolatrici comuni e il tipo numerico ordinario di JavaScript non distinguono più gli interi contigui oltre due elevato alla cinquantatreesima. Con il tipo BigInt si supera questo limite e si calcola con esattezza.
| Number.MAX_SAFE_INTEGER | 9,007,199,254,740,991(253 − 1) |
|---|---|
| 9007199254740992 + 1 | Number: 9007199254740992 (errato) / BigInt: 9007199254740993 (esatto) |
Consigli
- I tipi numerici delle calcolatrici comuni e dei fogli di calcolo introducono errori oltre due elevato alla cinquantatreesima, cioè circa novecentomila miliardi, mentre questo strumento, servendosi del tipo BigInt, calcola con esattezza senza limiti di cifre.
- Nella divisione intera si mostrano insieme il quoziente e il resto: comodo anche per verificare le operazioni modulari usate in crittografia e nel calcolo delle sintesi.
- Un esponente troppo grande rischierebbe di bloccare il navigatore: per prudenza il limite è fissato a un milione.
- Nei campi si possono inserire anche numeri con i separatori delle migliaia, come
1.234.567: sono rimossi automaticamente prima del calcolo e potete quindi incollare i valori così come sono. - Il pulsante degli esempi inserisce automaticamente un calcolo con interi enormi, oltre due elevato alla cinquantatreesima, per constatare subito la differenza rispetto a una calcolatrice comune.
Domande frequenti
A proposito — quando gli elaboratori faticavano con i numeri grandi
La rappresentazione dei numeri negli elaboratori ha a lungo sofferto di limiti. Il numero in virgola mobile a 64 bit, cioè a doppia precisione, che molti linguaggi usano di serie, tratta con sicurezza gli interi soltanto fino a 9.007.199.254.740.991, cioè due elevato alla cinquantatreesima meno uno: la mantissa conta appena cinquantatré bit e oltre quella soglia la rappresentazione introduce errori di arrotondamento. Anche la calcolatrice presente su questo sito ne è soggetta.
A risolvere il problema è l'idea degli interi a precisione arbitraria. In JavaScript, dal 2020 circa, il nuovo tipo BigInt è presente di serie in tutti i principali navigatori e permette di trattare con esattezza interi senza limiti di cifre, nei limiti della memoria disponibile. Internamente, però, gestisce le cifre come una successione di elementi: più cifre ci sono, più il calcolo rallenta.
La tecnica è indispensabile anche in crittografia. Le chiavi dell'algoritmo RSA, per esempio, usano comunemente interi da 2048 bit, cioè oltre seicento cifre decimali, e per moltiplicarli ed elevarli a potenza modulo un numero servono librerie per interi a precisione arbitraria, impiegate nei programmi crittografici di tutto il mondo.
Anche nella programmazione competitiva ricorrono problemi con fattoriali enormi — quello di cento conta centocinquantotto cifre — o con termini lontani di successioni ricorsive. Con i tipi numerici ordinari gli errori si insinuano ben presto: la padronanza degli interi a precisione arbitraria incide spesso sulla percentuale di soluzioni corrette.