2010-01-06 65 views

回答

11

將它們相乘。

如果答案是肯定的,那麼它們都是相同的符號。

如果答案是否定的,那麼它們的符號相反。

如果答案爲零(在一定的數值​​範圍內考慮舍入誤差),那麼其中一個或兩個都爲零,您必須單獨檢查它們。然後,您必須決定在您的情況下是否將0視爲正面或負面。

+0

什麼是零? – Simon 2010-01-06 14:55:16

+0

@Simon - 我剛剛意識到&更新了我的回答 – ChrisF 2010-01-06 14:56:03

+0

自己再看一遍,OPs規則不明確,因爲零既不是+ ve也不是-ve。 – Simon 2010-01-06 14:58:52

2

就做這樣的事情:

if float1*float2<0 
    Error 
0
function isSameSign(a,b){ 
    var r = a*b; 
    return (r >= 0) 
} 
7

雖然產品的標誌的檢測可以做到的,它不是你所感興趣的東西尤其是如果你要使用它的大。 (例如,檢測時間流中的過零點)。

最簡單的方法是準確地表達你所要求的:是否等於b的符號?

function samesign(a, b) { 
    var aPositive = a >= 0; 
    var bPositive = b >= 0; 
    return aPositive == bPositive; 
} 

或更短:

function samesign(a, b) { return (a>=0) == (b>=0); } 
+0

+1比乘法更好的解決方案。正如所有人在其他答案中注意到的那樣,清楚並且沒有技巧地編碼是非常重要的。除非你有其他的優化方案 – Toad 2010-06-14 15:58:53

相關問題