Ответ 1
Оператор modulo:
> 208 % 11
=> 10
Я пытаюсь получить остаток от деления с помощью 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
Оператор modulo:
> 208 % 11
=> 10
Если вам нужна только целая часть, используйте целые числа с оператором /
или метод 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
.