为什么在红宝石中模运算与其他语言不同?

时间:2018-11-19 16:06:53

标签: ruby

在Ruby中,我得到了:

-5 % 3 # => 1

而其他语言(如PHP,Javascript,C ++和Java)都产生结果-2。我不明白这个概念。我希望有人能解释这个红宝石的计算方法。如果您可以使用它的工作方式示例,那就更好了。

1 个答案:

答案 0 :(得分:2)

它在文档中:https://ruby-doc.org/core-2.5.0/Numeric.html#method-i-divmod

  

如果q, r = x.divmod(y),则

q = floor(x/y)
x = q*y + r
     

商被舍入为负无穷大

因此q为-3(-5 / 2并按常规整数除法四舍五入)。还有r = x - q * y = -5 - -3 * 2 = 1