我正在寻找关于 Ruby 的模操作数如何工作以及为什么在 Ruby 中的简单解释
puts 4 % 3 # 1
puts -4 % 3 # 2 <--why?
puts -4 % -3 # -1
但是在 PHP 中:
<?php
echo 4 % 3; # 1
echo -4 % 3; # -1
echo -4 % -3; # -1
在我看来 -4 % 3 实际上是 8 % 3(8 是 4 和 -4 之间的差值)。
最佳答案
根据您的定义,它们都可以被认为是正确的。如果 a % n == r
,那么它应该满足:
a == q*n + r
其中 q == a/n
。
r
是正数还是负数由q
的值决定。所以在你的例子中,要么:
-4 == -1*3 + (-1) // PHP
-4 == -2*3 + 2 // Ruby
换句话说,%
的定义依赖于/
的定义。
另请参阅此处的表格:http://en.wikipedia.org/wiki/Modulus_operator#Remainder_calculation_for_the_modulo_operation .您会发现这在不同的编程语言之间有很大差异。
关于php - ruby 中的模数运算符与 php 相比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395205/