2012-12-22 26 views
2

當通過數字序列循環(例如,0.1,-0.5,1.0,-0.33,...)我想要的方式來測試的當前數目是否具有比前一個不同的符號。我的代碼是低於,但 - 必須有更好的方式..測試符號更改的更好方法?

-(bool)signChanged:(float)prev :(float)value{ 

    // our value is negative 
    if(value < 0.0){ 

     // previous value is positive or zero 
     if(prev >= 0.0) return true; 

    // our value is positive 
    }else{ 

     if(prev < 0.0) return true; 
    } 

    return false; 
} 
+1

如果((值* PREV)<0)? (取決於你想從0得到什麼行爲) – JasonD

回答

6

對於這樣的快速驗證,使用代替的方法的宏:

#define SAME_SIGN(v1,v2) (v1>=0)==(v2>=0) 
1

將您的值乘以以前的值。如果結果是肯定的,則標誌沒有改變。否則,它已經。

+0

如果溢出?除了乘法更昂貴。 – lerosQ

+0

無法驗證如果一個值爲零,那麼這是一個聰明的想法。 –