Как найти остаток от деления в Ruby? - PullRequest
42 голосов
/ 01 февраля 2012

Я пытаюсь получить остаток от деления, используя 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

Ответы [ 3 ]

70 голосов
/ 01 февраля 2012

Оператор по модулю:

> 208 % 11
=> 10
49 голосов
/ 01 февраля 2012

Если вам нужна только целая часть, используйте целые числа с оператором / или 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.Это работает даже в том случае, если получатель или аргумент является плавающей точкой:

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

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

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

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

0 голосов
/ 31 декабря 2018

используйте Числовой # остаток , потому что мод не является остатком

Modulo:

5.modulo(3)
#=> 2
5.modulo(-3)
#=> -1

Остаток:

5.remainder(3)
#=> 2
5.remainder(-3)
#=> 2

вот ссылка на обсуждение проблемы https://rob.conery.io/2018/08/21/mod-and-remainder-are-not-the-same/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...