2012-01-21 4 views

ответ

16

Сравните остаток от деления на ноль, как это:

12 % 6 == 0 

18 % 6 == 0 

20 % 6 ~= 0 

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

Формула она использует это: a % b == a - math.floor(a/b)*b

+2

Самое замечательное% в том, что он работает над вещественными числами, а – etandel

0

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

[email protected] ~ $ lua 
> return -13%6 
5 
> return 13%6 
1 
> return math.fmod (-13, 6) 
-1 
> return math.fmod (13, 6) 
1 
> 
+0

Для сравнения с 0, то оператор модуля, кажется, работает хорошо. Нет необходимости делать дополнительный вызов функции. – BMitch

+0

На самом деле это хороший момент. –

+1

Действительно ли '-13% 6 == 5' неверен. Это часто поведение, которое вы хотите. – Eric