Ruby中的整数除法具有负值

时间:2013-05-13 20:30:24

标签: ruby division

尝试在Ruby中进行负值划分,例如-123/10,为什么它返回-13而不是-12?

ruby -v
ruby 1.9.3p375 (2013-01-18) [x86_64-darwin12.2.1]

irb(main):001:0> -123/10
=> -13
irb(main):002:0> -123%10
=> 7

-123/10返回-12和-123%10按预期在C / C ++中返回-3。

1 个答案:

答案 0 :(得分:8)

这是它的设计方式。在负分割和模运算的情况下,Ruby将数字向负无穷大舍入。这不是Ruby独有的,Python和Perl的行为也是如此。

然而,这种方法提供了一个很好的数学原因。

a / b = q,其余为r

这样

b * q + r = a and 0 <= r < b

从我读到的,这就是日本的算术运算方式。

修改

sawa指出这就是日本教授积极算术的方法,而不是负数。但是,正如他所说,这也可以扩展到负数。

来源:

Ruby Forums