Per quanto mi ricordo di aver programmato, mi hanno insegnato a non confrontare i numeri in virgola mobile per l'uguaglianza. Ora, leggendo Programmazione in Lua sul number
tipo di Lua , ho trovato quanto segue:
Il tipo di numero rappresenta numeri reali (a virgola mobile a precisione doppia). Lua non ha un numero intero, in quanto non ne ha bisogno. Esiste un malinteso diffuso sugli errori aritmetici in virgola mobile e alcune persone temono che anche un semplice incremento possa diventare strano con i numeri in virgola mobile. Il fatto è che, quando si utilizza un doppio per rappresentare un numero intero, non si verifica alcun errore di arrotondamento (a meno che il numero non sia maggiore di 100.000.000.000.000). In particolare, un numero Lua può rappresentare qualsiasi numero intero lungo senza problemi di arrotondamento. Inoltre, la maggior parte delle CPU moderne esegue l'aritmetica in virgola mobile alla stessa velocità (o persino più veloce) dell'aritmetica intera.
È vero per tutte le lingue? Fondamentalmente se non andiamo oltre il virgola mobile nei doppi, siamo al sicuro nell'aritmetica dei numeri interi? Oppure, per essere più in linea con il titolo della domanda, c'è qualcosa di speciale che Lua fa con il suo number
tipo, quindi funziona bene sia come numero intero che in virgola mobile?