Date: 2007-02-26 04:22 pm (UTC)
я вижу в этом определенное непостоянство философии

Думаю, что это утверждение не очень верно. Дело в том, что в Lua (в стандартной сборке) нет целых чисел и все числа представляются вещественными числами. В случае арифметических операций, в которых смешаны строки и числа, особой опсности нет — после преобразования получится тот же ответ, что и при явном преобразовании или при непосредственной записи константы в исходнике. (Раз уж число представлено строкой, то его строковая запись — это все, что мы про него знаем.) Уже при обратном преобразовании (неявное преобразование числа в строку при конкатенации) чаще всего получается не то, чего ожидает пользователь, но это легко заметить и использовать явное форматирование (string.format()). В случае же сравнения автоматическое преобразование сделает это сравнение крайне неустойчивой операцией. Для вещественного числа строка будет содержать приближенное представление (наши знания о числе), а другой операнд будет содержать точное значение числа со всеми накопленными погрешностями. В результате очень во многих случаях результаты сравнения будут непредсказуемыми.

Вот совсем простой пример:

s = 0.1
s = s + 0.1
s = s + 0.1
print( s == 0.3 )

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

January 2026

S M T W T F S
    1 2 3
4 5 6 7 8 910
11 12 1314 151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 16th, 2026 07:38 am
Powered by Dreamwidth Studios