我有一个使用floats或doubles执行一些计算的算法.
例:
double a;
double b;
double c;
...
double result = c / (b - a);
if ((result > 0) && (result < small_number))
{
// result is relevant...
} else {
// result not required...
}
Run Code Online (Sandbox Code Playgroud)
现在,我担心(b - a)可能是零.如果它接近于零而不是零,则无关紧要,因为result它将超出范围是有用的,并且我已经检测到(当(b - a)接近零时,result将接近+/- inf,这不在范围内0- small_number. ..)
但如果结果(b - a)恰好为零,我预计由于除以零而会发生某种平台依赖.我可以将if声明更改为:
if ((!((b-a) == 0.0)) && ((result = c/(b-a)) > 0) && (result …Run Code Online (Sandbox Code Playgroud)