Tanto quanto me lembro de programar, fui ensinado a não comparar números de ponto flutuante para igualdade. Agora, ao ler Programação em Lua sobre o number
tipo Lua , encontrei o seguinte:
O tipo de número representa números reais (ponto flutuante de precisão dupla). Lua não tem tipo inteiro, pois não precisa dele. Há um equívoco generalizado sobre erros aritméticos de ponto flutuante e algumas pessoas temem que mesmo um simples incremento possa ficar estranho com números de ponto flutuante. O fato é que, quando você usa um duplo para representar um número inteiro, não há nenhum erro de arredondamento (a menos que o número seja maior que 100.000.000.000.000). Especificamente, um número Lua pode representar qualquer número inteiro longo sem problemas de arredondamento. Além disso, a maioria das CPUs modernas faz aritmética de ponto flutuante tão rápido quanto (ou até mais rápido que) a aritmética inteira.
Isso é verdade para todos os idiomas? Basicamente, se não formos além do ponto flutuante em duplas, estaremos seguros na aritmética inteira? Ou, para estar mais de acordo com o título da pergunta, há algo especial que Lua faz com seu number
tipo, para que funcione bem como tipo inteiro e ponto flutuante?