В Lua, как я могу определить, делится ли число поровну на другое число? - PullRequest
8 голосов
/ 21 января 2012

В Lua, как я могу определить, делится ли число поровну на другое число?т.е. без остатка?Я просто ищу логическое значение true или false.

12/6 = 2 (true)
18/6 = 3 (true)
20/6 = 3.(3) (false)

Ответы [ 2 ]

17 голосов
/ 21 января 2012

Сравните остаток от деления с нулем, например:

12 % 6 == 0

18 % 6 == 0

20 % 6 ~= 0

Оператор модуля (%) возвращает остаток от деления.Для 12 и 6 это 0, а для 20 и 6 - 2.

Используемая формула: a % b == a - math.floor(a/b)*b

0 голосов
/ 12 февраля 2012

Проблема с использованием оператора модуля состоит в том, что он не работает правильно на отрицательных числах. Если вы собираетесь использовать отрицательные числа, используйте math.fmod вместо:

maxtothemax@maxtothemax-mint ~ $ lua 
> return  -13%6
5
> return  13%6
1
> return math.fmod (-13, 6)
-1
> return math.fmod (13, 6)
1
> 
...