Подтвердить что ты не робот

Как найти остаток от подразделения в Ruby?

Я пытаюсь получить остаток от деления с помощью Ruby.

Скажем, мы пытаемся разделить 208 на 11.

Финал должен быть "18 с остатком 10"... мне в конечном итоге нужно, чтобы 10.

Вот что я получил до сих пор, но он задыхается в этом случае (говоря, что осталось 0).

division = 208.to_f / 11
rounded = (division*10).ceil/10.0
remainder = rounded.round(1).to_s.last.to_i
4b9b3361

Ответ 1

Оператор modulo:

> 208 % 11
=> 10

Ответ 2

Если вам нужна только целая часть, используйте целые числа с оператором / или метод Numeric#div:

quotient = 208 / 11
#=> 18

quotient = 208.0.div 11
#=> 18

Если вам нужен только остаток, используйте оператор % или метод Numeric#modulo:

modulus = 208 % 11
#=> 10

modulus = 208.0.modulo 11
#=> 10.0

Если вам нужны оба варианта, используйте метод Numeric#divmod. Это даже работает, если приемник или аргумент является float:

quotient, modulus = 208.divmod(11)
#=> [18, 10]

208.0.divmod(11)
#=> [18, 10.0]

208.divmod(11.0)
#=> [18, 10.0]

Также интересен метод Numeric#remainder. Различия между ними можно увидеть в документации для divmod.