[英]Detect if number change from negative to positive or positive to negative
如何檢測正面或負面變化?
示例:
1
更改為2
= false
0
更改為1
= false
因為兩者都是正數
1
更改為-1
= true
0
更改為-1
= true
因為積極改變為消極
-1
更改為0
= true
-1
更改為1
= true
因為負面改變為正面
我喜歡..
var a_test,b_test;
if(a<0) {
a_test = 'negative';
} else {
a_test = 'positive';
}
if(b<0) {
b_test = 'negative';
} else {
b_test = 'positive';
}
if(a_test!==b_test) {
alert('Yeah!');
}
測試: http : //jsfiddle.net/e9QPP/
做任何更好的編碼做這樣的事情?
維基:負數是一個小於零的實數
根據Zen of Python
的Zen of Python
,
可讀性很重要。
所以,我提出了更具可讀性和代碼審查的傳遞版本
if (a < 0 && b >= 0 || a >= 0 && b < 0) {
alert("Yeah");
}
你似乎想要
if (a*b<0) alert('Yeah!');
如果您想將0
視為正數,則可以使用
if (a*b<0 || (!(a*b) && a+b<0)) alert('Yeah!');
采取合適的標志功能 :
function sign(x) {
return typeof x === 'number' ? x ? x < 0 ? -1 : 1 : x === x ? 0 : NaN : NaN;
}
那么你的問題可以用清晰的(希望)簡單的術語來表達:
if (sign(a) !== sign(b)) {
// Your code here
}
根據您的標准,您似乎只想比較兩個數字的符號。 符號存儲在數字的最高位,因此,為了比較符號,我們可以簡單地將所有其他位移出數字,並比較符號。
JavaScript中的數字是64位( double
),因此我們需要移除符號前面的63位:
if (a >>> 63 !== b >>> 63) alert('Yeah!');
這是一個jsFiddle演示
請注意,這假設數字是64位。 我不知道該規范是否將其限制為64位,但是有些瀏覽器可能存在(或將是一天),其中數字可能由128位數字或更大數字表示。
也許有點晚了,但我遇到了同樣的問題。
假設您現在a和b是數字,為什么不:
if(a < 0 ? b >=0 : b < 0){
// your code here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.