Size: a a a

2021 November 17

S

Snusmumriken in pro.lua
Лечу от ОКР без смс и регистрации
источник
2021 November 18

S

Snusmumriken in pro.lua
Забей
источник

TL

Tony Lutsenko in pro.lua
а зачем удалили статью?
источник

TL

Tony Lutsenko in pro.lua
антиспам-бот – полезная штука
источник

S

Snusmumriken in pro.lua
Полезная, да )
источник

S

Snusmumriken in pro.lua
Но местный админ отсутствует большую часть времени, это раз, два — антиспам-бот — очень узкоспециализированная штука требующая постоянной адаптации под меняющиеся условия, я предпочёл бы накатать что-то самостоятельно например, хмммм
источник

TL

Tony Lutsenko in pro.lua
вот как раз потому, что отсутствует, было бы логично юзать бота
источник

S

Snusmumriken in pro.lua
Ну типа, появляется десять тысяч разных спамеров, и на каждый тип спамера — своего бота. Мда.
Спамеры уходят, боты остаются, появляются новые спамеры — опа, в группе больше ботов чем людей.
источник

M

Michael in pro.lua
пингуйте да и всё, делов то
источник
2021 November 19

V

Vulpes in pro.lua
Какие сложные конкурсы для вступления :)
источник

V

Vulpes in pro.lua
local pay = 1.2
print(pay - math.floor(pay) == 0.2)

Можно ли как-то это превратить в true?
Не прибегая к tostring
источник

Р

Роман in pro.lua
источник

V

Vulpes in pro.lua
Это я всё понимаю
В принципе я нашел обходной путь

local pay = 1.2
print(pay == 0.2 + math.floor(pay))
источник

AG

A G in pro.lua
Можно вычислить значение машинного эпсилон и сравнивать уже с учётом этого.
Вот тут было доступно изложено:
https://sites.google.com/site/ltwood/projects/numpro/float
источник

V

Vulpes in pro.lua
В принципе (дубль два), методом тыка, написал вот такую рабочую ерунду:
function CE2F(a, b)
   -- less 1
   if (b < 1) then
       return a == b + math.floor(a)
   end
   
   -- Else
   return a + math.floor(a) == b + math.floor(a)
end

-- Plus
print(CE2F(1.12 + 1.11, 2.23))    --> true
print(CE2F(100.5, 100 + 0.5))     --> true
print(CE2F(0.080, 0.075 + 0.005)) --> true

-- Minus
print(CE2F(99.9, 100 - 0.1))     --> true
print(CE2F(12.375 - 0.375, 12))  --> true
print(CE2F(0.012 - 0.002, 0.01)) --> true

-- Multiply
print(CE2F(2.5 * 2, 5))      --> true
print(CE2F(4 * 0.5, 2))      --> true
print(CE2F(0.75 * 10, 7.5))  --> true

-- Div
print(CE2F(5 / 0.5, 10))       --> true
print(CE2F(1 / 100, 0.01))     --> true
print(CE2F(5 / 100, 5 / 100))  --> true
источник

DS

Daniil Smolyakov in pro.lua
Всё равно опасно.
Лучше либо через эпсилон, либо через стринг, ну или умножить на офигилиард, округлить до целого и сравнить. :-)
источник

AT

Alexander T in pro.lua
Судя по контексту, планируется работа с какими-то финансами, а для этого обычно используется десятичная арифметика с фиксированной точкой ("fixed-point", "decimal"). Стоит поискать по этим ключевым словам, и/или самому написать простенький класс с базовыми операциями, где числа представляются в виде "целочисленных" мантиссы + экспоненты: 1.2 = 12 * 10^(-1) = {12, -1}
https://www.tarantool.io/ru/doc/latest/reference/reference_lua/decimal/
http://lua-users.org/lists/lua-l/2007-10/msg00391.html
источник

V

Vulpes in pro.lua
Мне просто стало интересно разобраться с этим, без учёта епсилон.
Потому что я не особо понимаю, насколько безопасна к примеру такая запись прям для всех x64

local a = 0.6
local b = 0.5
local double_epsilon = 2^-52
print((a - 0.1) + double_epsilon == b + double_epsilon)
источник

IS

Ivan Stepanov in pro.lua
Fixed используй.
источник

V

Vulpes in pro.lua
Вот только что нагуглил пример на Си  для вычисления эпсилон
In lua:
function macheps()
 local e = 1.0

 while (1.0 + e / 2.0 > 1.0) do
    e = e / 2.0
 end
 return e
end
источник