Per quanto mi ricordo della programmazione mi è stato insegnato a non confrontare i numeri in virgola mobile per l'uguaglianza. Ora, durante la lettura di Programmazione in Lua sul tipo Lua number
, ho trovato seguente:
The number type represents real (double-precision floating-point) numbers. Lua has no integer type, as it does not need it. There is a widespread misconception about floating-point arithmetic errors and some people fear that even a simple increment can go weird with floating-point numbers. The fact is that, when you use a double to represent an integer, there is no rounding error at all (unless the number is greater than 100,000,000,000,000). Specifically, a Lua number can represent any long integer without rounding problems. Moreover, most modern CPUs do floating-point arithmetic as fast as (or even faster than) integer arithmetic.
È vero per tutte le lingue? Fondamentalmente se non andiamo oltre il punto di virgola mobile in doppio, siamo al sicuro con l'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 tipo number
, quindi funziona bene sia come integer che in virgola mobile?