Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
尝试在 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 在 C/C++ 中按预期返回 -12 和 -123%10 返回 -3。
这就是它的设计方式。在负除法和模运算的情况下,Ruby 会将数字向负无穷大舍入。这不是 Ruby 独有的,Python 和 Perl 的行为也是如此。
然而,这种方法提供了一个很好的数学理由。
a / b = q有余数r
a / b = q
r
这样
b * q + r = a and 0 <= r < b
从我读到的,这就是日本的算术教学方式。
编辑:
泽和指出,这就是日本教正数算术的方式,而不是负数。然而,正如他所说,这也可以扩展到负数。
资料来源:
红宝石论坛