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;
}
4

2 に答える 2

6

このような迅速な検証を行うには、メソッドの代わりにマクロを使用します。

#define SAME_SIGN(v1,v2) (v1>=0)==(v2>=0)
于 2012-12-22T20:07:47.877 に答える