谁能告诉我一些代码,以确定一个数字在JavaScript是偶数还是奇数?


当前回答

我将实现这个来返回一个布尔值:

function isOdd (n) {
    return !!(n % 2);
    // or ((n % 2) !== 0).
}

它对无符号数和有符号数都有效。当模量返回-1或1时,它将被转换为true。

Non-modulus解决方案:

var is_finite = isFinite;
var is_nan = isNaN;

function isOdd (discriminant) {
    if (is_nan(discriminant) && !is_finite(discriminant)) {
        return false;
    }

    // Unsigned numbers
    if (discriminant >= 0) {
        while (discriminant >= 1) discriminant -= 2;

    // Signed numbers
    } else {
        if (discriminant === -1) return true;
        while (discriminant <= -1) discriminant += 2;
    }

    return !!discriminant;
}

其他回答

一个可以传递的简单函数。使用模运算符%:

var is_even = function(x) {
    return !(x % 2); 
}

is_even(3)
false
is_even(6)
true
   <script>
        function even_odd(){
            var num =   document.getElementById('number').value;

            if ( num % 2){
                document.getElementById('result').innerHTML = "Entered Number is Odd";
            }
            else{
                document.getElementById('result').innerHTML = "Entered Number is Even";
            }
        }
    </script>
</head>
<body>
    <center>
        <div id="error"></div>
        <center>
            <h2> Find Given Number is Even or Odd </h2>
            <p>Enter a value</p>
            <input type="text" id="number" />
            <button onclick="even_odd();">Check</button><br />
            <div id="result"><b></b></div>
        </center>
    </center>
</body>

许多人误解了odd的意思

isOdd("str")应该为假。 整数只能是奇数。 isOdd(1.223)和isOdd(-1.223)应该是假的。 浮点数不是整数。 isOdd(0)应该是假的。 0是一个偶数(https://en.wikipedia.org/wiki/Parity_of_zero)。 isOdd(-1)应该为真。 它是一个奇数。

解决方案

function isOdd(n) {

  // Must be a number
  if (isNaN(n)) {
    return false;
  }

  // Number must not be a float
  if ((n % 1) !== 0) {
    return false;
  }

  // Integer must not be equal to zero
  if (n === 0) {
    return false;
  }

  // Integer must be odd
  if ((n % 2) !== 0) {
    return true;
  }

  return false;
}

JS小提琴(如果需要):https://jsfiddle.net/9dzdv593/8/

1-liner

Javascript一行程序解决方案。对于那些不关心可读性的人。

const isOdd = n => !(isNaN(n) && ((n % 1) !== 0) && (n === 0)) && ((n % 2) !== 0) ? true : false;

奇数除以2剩下余数为1,偶数除以0剩下余数为0。因此我们可以使用这段代码

  function checker(number)  {
   return number%2==0?even:odd;
   }

像许多语言一样,Javascript有一个模运算符%,用于查找除法的余数。如果数除2后无余数,则该数为偶数:

// this expression is true if "number" is even, false otherwise
(number % 2 == 0)

同理,若2除后余数为1,则该数为奇数:

// this expression is true if "number" is odd, false otherwise
(number % 2 == 1)

这是测试偶数的一个非常常见的习惯用法。