Может кто-то объяснить, почему в Lua бега:Lua десятичная точность потери
return 256.65 * 1000000 + .000000005 - 256 * 1000000 gives 649999.99999997
тогда
return 255.65 * 1000000 + .000000005 - 255 * 1000000 and
return 268.65 * 1000000 + .000000005 - 268 * 1000000 give 650000.0 ?
Из того, что я могу видеть это, как представляется, является проблемой исключительно для десятичного 65 (и, кажется, также 15) и для целых чисел в диапазоне 256 - 267. Я знаю, что это связано с выполнением этих расчетов с плавающими точками, но мне все же интересно узнать, что особенно важно в этих значениях, в частности
При печати номер 'x' путем выдачи команды' печати (х) ', Lua показывает' string.Format ("%. 14g", х) 'вместо всех доступных цифр числа' x' (см. [Источник Lua] (https://www.lua.org/source/5.3/luaconf.h.html#LUA_NUMBER_FMT)). Вы можете попробовать 'print (string.format («%. 17g », x))', чтобы просмотреть больше цифр. –
Ваш второй фрагмент кода недействителен. – warspyking
Что значит недействительный? Чтобы быть ясным, я имел в виду их как два отдельных фрагмента кода, а не два оператора возврата и ed вместе. Приносим извинения, если это было неясно – David