Замена Lua для оператора% - PullRequest
28 голосов
/ 14 марта 2012

Я хочу проверить, делится ли число на другое число:

for i = 1, 100 do
    if i % 2 == 0 then
        print( i .. " is divisible.")
    end
end

Это должно работать без проблем, но с Lua на моем сервере скрипт не запускается, если есть% в сценарии ... Я не знаю, в чем причина, так есть ли какая-нибудь "замена" для этого?Чтобы я мог проверить делимость числа?

Спасибо.

Ответы [ 6 ]

49 голосов
/ 14 марта 2012

Используйте math.fmod(x,y), который делает то, что вы хотите:

Возвращает остаток от деления x на y, которое округляет частное к нулю.

http://www.lua.org/manual/5.2/manual.html#pdf-math.fmod

25 голосов
/ 14 марта 2012

Это не идеально, но согласно Справочное руководство Lua 5.2 :

a% b == a - math.floor (a / b) * b

3 голосов
/ 15 декабря 2016

Использование math.fmod, в соответствии Руководство lua math.mod было переименовано в math.fmod в lua 5.1.

3 голосов
/ 31 декабря 2013
function mod(a, b)
    return a - (math.floor(a/b)*b)
end
3 голосов
/ 18 августа 2013
for i = 1, 100 do
    if (math.mod(i,2) == 0) then
        print( i .. " is divisible.")
    end
end
1 голос
/ 07 января 2018

Lua 5.0 не поддерживает оператор %.

Lua поддерживает обычные арифметические операторы: двоичные + (сложение), - (вычитание), * (умножение), / (деление) и ^ (возведение в степень); и унарный - (отрицание).

https://www.lua.org/manual/5.0/manual.html

Lua 5.1, однако, поддерживает оператор %.

Lua поддерживает обычные арифметические операторы: двоичные + (сложение), - (вычитание), * (умножение), / (деление),% (по модулю) и ^ (возведение в степень); и унарный - (отрицание).

https://www.lua.org/manual/5.1/manual.html

Если возможно, я бы порекомендовал вам обновить. Если это невозможно, используйте math.mod, который указан в качестве одной из математических функций в 5.0 (он был переименован в math.fmod в Lua 5.1

...