Por lo que recuerdo, yo mismo estaba programando, me enseñaron a no comparar números de coma flotante por igualdad. Ahora, mientras leía Programación en Lua sobre el number
tipo de Lua , encontré lo siguiente:
El tipo de número representa números reales (punto flotante de precisión doble). Lua no tiene un tipo entero, ya que no lo necesita. Existe una idea errónea generalizada sobre los errores aritméticos de punto flotante y algunas personas temen que incluso un simple incremento pueda volverse extraño con los números de punto flotante. El hecho es que, cuando usa un doble para representar un número entero, no hay ningún error de redondeo (a menos que el número sea mayor que 100,000,000,000,000). Específicamente, un número Lua puede representar cualquier número entero largo sin problemas de redondeo. Además, la mayoría de las CPU modernas hacen aritmética de punto flotante tan rápido (o incluso más rápido que) aritmética de enteros.
¿Es eso cierto para todos los idiomas? Básicamente, si no vamos más allá del punto flotante en dobles, ¿estamos seguros en la aritmética de enteros? O, para estar más en línea con el título de la pregunta, ¿hay algo especial que Lua haga con su number
tipo para que funcione bien como tipo entero y tipo de punto flotante?