当循环一系列数字(例如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;
}
答案 0 :(得分:6)
对于此类快速验证,请使用宏而不是方法:
#define SAME_SIGN(v1,v2) (v1>=0)==(v2>=0)
答案 1 :(得分:1)
将您的值乘以之前的值。如果结果为正,则符号未更改。否则,它有。