我有这个PHP函数,它对负数不起作用:
function isOdd($num)
{
return $num % 2 == 1;
}
但它适用于正数。
我有这个Perl例程,它完全相同,也适用于负数
sub isOdd()
{
my ($num) = @_;
return $num % 2 == 1;
}
我在翻译这个功能时有错吗?还是PHP bug?
答案 0 :(得分:20)
在PHP中,x % y
结果的符号是被除数的符号,即x
但是
在Perl中,它是除数的符号,即y
。
因此,在PHP中,$num % 2
的结果可以是1
,-1
或0
。
因此,请修复您的函数,将结果与0
进行比较:
function isOdd($num) {
return $num % 2 != 0;
}