-1%4的正确答案是什么?

时间:2012-03-24 20:52:31

标签: php ruby math

我正在使用PHP进行项目,我希望-1 % 4返回3。但是,最终结果是PHP中的-1,我不知道原因:

php > echo -1 % 4;
-1

我检查了Ruby IRB,结果是3

irb(main):001:0> puts -1 % 4
3

2 个答案:

答案 0 :(得分:5)

因为它是根据划分来定义的,所以:

a%b == a - (a/b)*b

对于结果为负的部门,有两种可能的定义;要么向零舍入,要么向负无穷大舍入。不同的编程语言做出了不同的选择。

有关详细信息,请参阅http://en.wikipedia.org/wiki/Modulo_operator#Remainder_calculation_for_the_modulo_operation

答案 1 :(得分:1)

在这两种特定语言中,当处理涉及负操作数的整数除法时,PHP将结果舍入为零,而Ruby则向-infinity舍入。

在PHP中,来自Arithmetic Operators

  

模数运算符%的结果与被除数的符号相同。

在Ruby中,来自Numeric#divmod

  

商指向-infinity