Autant que je me souvienne de la programmation, on m'a appris à ne pas comparer les nombres à virgule flottante pour l'égalité. Maintenant, en lisant Programmation dans Lua sur le number
type Lua , j'ai trouvé ce qui suit:
Le type de nombre représente des nombres réels (virgule flottante double précision). Lua n'a pas de type entier, car il n'en a pas besoin. Il y a une idée fausse répandue sur les erreurs arithmétiques à virgule flottante et certaines personnes craignent que même un simple incrément puisse devenir bizarre avec des nombres à virgule flottante. Le fait est que, lorsque vous utilisez un double pour représenter un entier, il n'y a aucune erreur d'arrondi (sauf si le nombre est supérieur à 100 000 000 000 000). Plus précisément, un nombre Lua peut représenter n'importe quel entier long sans problème d'arrondi. De plus, la plupart des processeurs modernes font une arithmétique en virgule flottante aussi rapide (ou même plus rapide que) l'arithmétique entière.
Est-ce vrai pour toutes les langues? Fondamentalement, si nous n'allons pas au-delà de la virgule flottante en double, nous sommes en sécurité en arithmétique entière? Ou, pour être plus en phase avec le titre de la question, y a-t-il quelque chose de spécial que Lua fait avec son number
type, donc cela fonctionne bien en tant que type entier et flottant?