Наскільки я пам'ятаю себе програмуванням, мене навчали не порівнювати числа з плаваючою комою для рівності. Тепер, читаючи Програмування в Луї про number
тип Луа , я виявив наступне:
Тип числа представляє реальні числа з плаваючою комою з подвійною точністю. Lua не має цілого типу, оскільки він не потребує. Існує широко поширене помилкове уявлення про арифметичні помилки з плаваючою комою, і деякі люди бояться, що навіть простий приріст може стати дивним з числами з плаваючою комою. Справа в тому, що, коли ви використовуєте подвійний для представлення цілого числа, взагалі немає помилки округлення (якщо тільки число не перевищує 100 000 000 000 000). Зокрема, число Lua може представляти будь-яке довге ціле число без проблем округлення. Більш того, більшість сучасних процесорів виконують арифметику з плаваючою комою так само швидко, як і (або навіть швидше, ніж) цілу арифметику.
Це правда для всіх мов? В основному, якщо ми не виходимо за межі плаваючої точки в парних, ми в безпеці в цілій арифметиці? Або, щоб більше відповідати заголовку запитання, чи є щось особливе, що робить Lua зі своїм number
типом, щоб він працював чудово як з цілим числом, так і з плаваючою точкою?