如何在 JavaScript 中确定一个数字是否为奇数

IT技术 javascript
2021-01-20 04:56:28

谁能指出一些代码来确定 JavaScript 中的数字是偶数还是奇数?

6个回答

使用以下代码:

function isOdd(num) { return num % 2;}
console.log("1 is " + isOdd(1));
console.log("2 is " + isOdd(2));
console.log("3 is " + isOdd(3));
console.log("4 is " + isOdd(4));

1代表奇数,0代表偶数。

为了澄清起见,模运算符 (%) 给出了除法的余数。所以 3%2 将是 3/2,留下 1 作为余数,因此 3%2 将返回 1。
2021-03-23 04:56:28
进一步 TJ 所说的,如果num不是整数,这将返回一个分数如果您进行比较,这仍然有效isOdd(1.5)==true(因为小数值不等于true),但如果函数返回truefalse如名称“isOdd”所暗示的那样会更好
2021-03-23 04:56:28
是的,关于 NaN 的注释很好。但通常情况下,您希望 javascript 为真或假,这就是我按照我的方式编写它的原因。
2021-03-27 04:56:28
请注意,这将返回0or 1(或者,NaN如果您向它提供一些不是数字且无法强制转换为数字的东西),这在大多数情况下都可以正常工作。但如果你想要一个真正的truefalsereturn (num % 2) == 1;
2021-03-30 04:56:28
你也可以做return !!(num % 2)一个布尔值
2021-04-04 04:56:28

使用按位运算AND符。

function oddOrEven(x) {
  return ( x & 1 ) ? "odd" : "even";
}

function checkNumber(argNumber) {
  document.getElementById("result").innerHTML = "Number " + argNumber + " is " + oddOrEven(argNumber);
}
 
checkNumber(17);
<div id="result" style="font-size:150%;text-shadow: 1px 1px 2px #CE5937;" ></div>

如果你不想要一个字符串返回值,而是一个布尔值,使用这个:

var isOdd = function(x) { return x & 1; };
var isEven  = function(x) { return !( x & 1 ); };
@Gnuey 每个数字都由一系列位组成。所有奇数的最低有效(最右边)位设置为 1,所有偶数都设置为 0。x & 1检查是否在数字中设置了最后一位(因为 1 是一个所有位都设置为 1 的数字,除了最低有效位):如果,则为奇数,否则为偶数。
2021-03-16 04:56:28
+1,你的答案绝对胜过我的,更不用说你有唯一一个使用的答案X % Y
2021-03-30 04:56:28
请注意,对于不是“奇数”或“偶数”的数字(例如,3.14),这将返回“奇数”或“偶数”。
2021-04-03 04:56:28
或:function isEven(n){return !(n & 1);}
2021-04-03 04:56:28
我不确定我的测试是否准确,但按位 AND 似乎比固定数的模运算符慢 40 倍,随机数慢 2 倍:jsperf.com/odd-or-even
2021-04-08 04:56:28

你可以这样做:

function isEven(value){
    if (value%2 == 0)
        return true;
    else
        return false;
}
@awm -好像不知道的JavaScript。你不能强制转换为布尔值(bool)(这会产生错误),并且在任何情况下你都不需要:return value%2 == 0;因为==操作符返回一个布尔值,所以会完成这项工作
2021-03-20 04:56:28
哇,真的是我写的吗?是的,这显然是错误的;应该是这样的answer = !!(condition)当然,我想说明的一点是,您可以return value%2==0并且不需要为条件而烦恼。
2021-03-25 04:56:28
无需刻薄,因为我的编程方式不同。
2021-04-01 04:56:28
我觉得它很优雅: value%2===0
2021-04-06 04:56:28
您似乎不知道布尔值是什么。 if (condition) { answer=true; } else { answer=false; }只是一个不必要的冗长版本answer = (bool) condition;减少你的功能function isEven(value) { return (bool) (value%2 == 0); },我们都会很高兴。
2021-04-11 04:56:28
function isEven(x) { return (x%2)==0; }
function isOdd(x) { return !isEven(x); }

我是否必须制作一个非常大的数组,它有很多偶数

否。使用模数 (%)。它为您提供要除的两个数字的余数。

Ex. 2 % 2 = 0 because 2/2 = 1 with 0 remainder.

Ex2. 3 % 2 = 1 because 3/2 = 1 with 1 remainder.

Ex3. -7 % 2 = -1 because -7/2 = -3 with -1 remainder.

这意味着如果您将任何数字 x 乘以 2,您将得到 0 或 1 或 -1。0 表示它是偶数。其他任何事情都意味着它很奇怪。