Sto cercando di pensare a come fare i calcoli su numeri estremamente grandi (all'infinito - non interpone alcuno float) se il costrutto del linguaggio non è in grado di gestire numeri più grandi di un certo valore.
Sono sicuro di non essere il primo né l'ultimo a porre questa domanda, ma i termini di ricerca che sto utilizzando non mi forniscono un algoritmo per gestire tali situazioni. Piuttosto, la maggior parte dei suggerimenti offre un cambio di lingua o un cambiamento variabile o parla di cose che sembrano irrilevanti alla mia ricerca. Quindi ho bisogno di un po 'di guida.
Vorrei abbozzare un algoritmo come questo:
-
Determina la lunghezza massima della variabile intera per la lingua.
-
Se un numero è più della metà della lunghezza della lunghezza massima della variabile, suddividila in una matrice. (dai una piccola sala giochi)
-
Ordine matrice [0] = i numeri più a destra [n-max] = i numeri più a sinistra
Ex. Num: 29392023 Array [0]: 23, Array [1]: 20, array [2]: 39, array [3]: 29
Dato che ho stabilito metà della lunghezza della variabile come punto di riferimento, posso calcolare i decimi, i centesimi, ecc. Posizionare tramite il segno a metà, in modo che se la lunghezza massima variabile fosse 10 cifre da 0 a 9999999999, allora So che con l'halfing a cinque cifre mi danno una stanza da gioco.
Quindi, se aggiungo o moltiplico posso avere una funzione di controllo variabile che vede che la sesta cifra (da destra) dell'array [0] è la stessa della prima cifra (da destra) dell'array [1] .
Dividere e sottrarre hanno i loro problemi che non ho ancora pensato.
Mi piacerebbe conoscere le migliori implementazioni di supportare numeri più grandi di quanto possa fare il programma.