Ruby Fixnum部门没有按预期计算

Bug*_*nny 0 ruby

在irb中,-3/4的结果是-1,而不是0.但是,正如预期的那样,3/4的结果是0.

有谁知道发生了什么?

谢谢!

我明白了,谢谢!

Mat*_*ano 6

这是因为/运算符执行floor操作.

所以-3/4等于-1而不是零.并且3/4等于零而不是1.

fix_div是ruby用来进行除法的方法.并fix_div使用fix_divide,在这里您可以看到floor调用方法的位置.

fix_divfix_divide是C的方法.

  • 很高兴知道这一点。文档 [Integer#/](http://ruby-doc.org/core-2.4.1/Integer.html#method-i-2F) 指出,“执行除法:结果对象的类取决于类数字。”,我觉得这不是特别有帮助。 (2认同)