如何在Ruby中找到一个部门的剩余部分?

时间:2012-01-31 20:06:01

标签: ruby math

我正在尝试使用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 个答案:

答案 0 :(得分:70)

模运算符:

> 208 % 11
=> 10

答案 1 :(得分:50)

如果只需要整数部分,请使用/运算符或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方法。所有这些之间的差异可以在documentation for divmod中找到。

答案 2 :(得分:0)

请使用Numeric#remainder,因为mod不是余数

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/