检查两个整数是否具有相同的符号
Check if two integers have the same sign
我正在寻找一种有效的方法来检查两个数字是否具有相同的符号。
基本上我正在寻找一种比这更优雅的方式:
var n1 = 1;
var n2 = -1;
( (n1 > 0 && n2 > 0) || (n1<0 && n2 < 0) )? console.log("equal sign"):console.log("different sign");
使用按位运算符的解决方案也可以。
您可以将它们相乘;如果它们具有相同的符号,则结果将是正数。
bool sameSign = (n1 * n2) > 0
代码字符较少,但对于非常小的数字可能会下溢:
n1*n2 > 0 ? console.log("equal sign") : console.log("different sign or zero");
注意:正如正确@tsh提到的,中间结果为 Infinity
或 -Infinity
的溢出确实有效。但是中间结果为 +0
或 -0
的下溢将失败,因为+0
不大于 0
.
或没有底溢,但稍大:
(n1<0) == (n2<0) ? console.log("equal sign") : console.log("different sign");
使用按位异或
n1^n2 >= 0 ? console.log("equal sign") : console.log("different sign");
这基于您如何为特殊值定义"相同符号":
NaN
,NaN
有相同的标志吗?
"否",答案是:
Math.sign(a) === Math.sign(b)
如果您的答案是"是",则答案是:
Object.is(Math.sign(a) + 0, Math.sign(b) + 0)
n = n1*n2;
if(n>0){ same sign }
else { different sign }
也许正则表达式应该可以解决问题
function isNegative(num) {
if (num.match(/^-'d+$/)) {
return true;
} else {
return false;
}
}
function isSameSign(num1, num2) {
var sameSign = false;
if (num1.match(/^-'d+$/) && num2.match(/^-'d+$/) ) {
sameSign = true;
} else if(!num2.match(/^-'d+$/) && !num2.match(/^-'d+$/)) {
sameSign =true;
}
return sameSign;
}
相关文章:
- 如何检查符号是否在范围(或数组)中
- 我如何判断一个符号是否被用作密钥
- 将 Object.defineProperties 与符号一起使用是否有效
- 所有有效的电子邮件是否至少包含一个@符号
- 单词边界是否适用于符号字符
- 是否可以在不轮询的情况下观看文本区域中的插入符号位置
- 比较字符串是否以符号 @ jquery 或 javascript 开头
- 跟进:检查两个整数是否具有相同的符号
- 检查两个整数是否具有相同的符号
- Rhino脚本引擎是否无法识别$符号
- 正在检查字符串是否包含数字和符号
- 是否可以使用变量来表示方程符号
- 如何检查字符串是否包含符号列表
- 如何检查数字输入字段中是否输入了字母字符或符号
- 如何查找当前光标区域是否为项目符号
- 是否有任何方法从IE浏览器的输入字段中删除交叉符号
- 如何检查一个元素在id的哈希符号之后是否有一个字符串?
- 是否可以包含一个javascript文件从符号链接
- 如何知道插入符号是否位于文本区域的最后一个字符
- 在php中,如何在使用GET方法时处理实际数据是否包含ambersand(&)符号