某些常见的简单功能实现中,需要根据某两个变量的比值进行特定的逻辑操作。
比如变量A和变量B,当两者相对变化在百分比阈值TH1时,做操作1;当两者变化达到TH1至TH2阈值时,做逻辑操作2;当大于百分比阈值TH2时,做逻辑操作3.
假设B相对于A变化时,A被设定为参考物体,B的变化需要再坐标系A下观察。B相对于A可能增大或者减小,比如增大20%或者减小20%。假若A=100,则B可能增大到120或者减小到80,都表示B相对于A变化了20%。
1.若是直接利用A/B的比值编程,复杂一点的伪代码实现为:
假设TH1<TH2,A>B。
min_th1 = (100-TH1)/100;
max_th1 = (100+TH1)/100;
min_th2= (100-TH2)/100;
max_th2 = (100+TH2)/100;
If(((A/B)<=max_th1 )&&((B/A)>=min_th1 ))
Operate 1;
Else If((A/B)<=max_th2 )&&((A/B)>max_th1 ) || (B/A)<min_th1 )&&((B/A)>=min_th2 ))
Operate 2;
Else if(((A/B)>max_th2 )||((B/A)<min_th2 ))
Operate 3;
2.若是利用abs(A-B)/A的比值编程,则伪代码表示为:
假设TH1<TH2,A>B。
min_th= TH1;
max_th = TH2;
ration = abs(A-B)*100/A;
If(ration <=min_th)
Operate 1;
Else If((ration )<max_th )&&((ration )>min_th ))
Operate 2;
Else if(((ration )>=max_th))
Operate 3;
方法2要简单明了些。直接比较B相对于A的变化百分比.假若A=100,B相对A增加或减少了20%(对应阈值TH1),B相对A增加或减少了50%(对应阈值TH2),那么直接用方法2更好理解,实现更简单些。