尝试在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。
答案 0 :(得分:8)
这是它的设计方式。在负分割和模运算的情况下,Ruby将数字向负无穷大舍入。这不是Ruby独有的,Python和Perl的行为也是如此。
然而,这种方法提供了一个很好的数学原因。
a / b = q
,其余为r
这样
b * q + r = a and 0 <= r < b
从我读到的,这就是日本的算术运算方式。
修改强>
sawa指出这就是日本教授积极算术的方法,而不是负数。但是,正如他所说,这也可以扩展到负数。
来源: