检查给定的数字是否为偶数,奇数或在PHP中都没有?

时间:2015-06-12 01:39:28

标签: php floating-point numbers integer

如果一个数字是偶数或奇数,或者两者都没有(如1.5)那么我可以得到PHP吗?我知道有*/这样的运算符,但它们不起作用 这是一个尝试(当然它没有)(工作只是为了找到它是否为偶数):

function even($n) {
    return (($n/2)*2 == $n);
}
echo even(1); // true (should be false)
echo even(2); // true

5 个答案:

答案 0 :(得分:2)

怎么样

function even($n) {
    if (!is_int($n)) {return 'n';}
    return !($n % 2);
}

even(1); // false;
even(2); // true;
even(1.5); // 'n'

这里的危险是如果用作布尔值,'n'将评估为false。返回一些特定的常量而不是true或false可能更好。 OP未指定返回值应该是什么。

答案 1 :(得分:1)

首先检查给定的号码是否为integer。并按位&检查它是偶数还是奇数。这是一个例子......

if (is_int($n)) {
    if ($n & 1) {
        echo 'Odd!';
    } else {
        echo 'Even!';
    }
} else {
    echo "Not a Integer!";
}

希望这有用。

答案 2 :(得分:1)

使用模运算符(%)来确定整数是否可被2整除。还需要abs()来处理负数,而is_int()来处理模数的事实运算符不能正确处理浮点数。下面是一个示例实现:

function is_even($num) {
    return is_int($num) && abs($num % 2) == 0;
}
function is_odd($num) {
    return is_int($num) && abs($num % 2) == 1;
}
// this last one seems self-explanatory, but if you want it, here it is
function is_neither_even_nor_odd($num) {
    return !is_even($num) && !is_odd($num);
}

// Tests: The following should all output true:
var_dump(
    is_even(0),
    is_even(2),
    is_even(-6),
    is_even(51238238),
    is_odd(1),
    is_odd(-1),
    is_odd(57),
    is_neither_even_nor_odd(1.5),
    is_neither_even_nor_odd(2.5),
    is_neither_even_nor_odd(-0.5),
    is_neither_even_nor_odd(0.00000001)
    );

Here's a demo

答案 3 :(得分:1)

这很简单。 modulo(%)是您想要的运算符,它确定如果x除以y,是否会有余数...例如(3%2 = 1)和(4%2 = 0)。 之前也有人问过这个问题 - 很常见的问题 - 你真的需要看看你的号码,$ n%2是否等于0。

php test if number is odd or even

答案 4 :(得分:0)

如果给定变量是数字

,则

is_numeric返回true 如果给定变量是整数

,则

is_int返回true

模运算符%可用于确定整数是偶数还是奇数:

$num % 2 == 0 // returns true if even, false if odd