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 回答
1

将您的值乘以先前的值。如果结果是肯定的,则符号没有改变。否则,它有。

于 2012-12-22T20:00:47.563 回答