Это, конечно, безопасно , но вы должны подумать, что это значит для ваших алгоритмов.Если ваш алгоритм использует factor
в качестве делителя (и сам по себе не проверяет деление на ноль), тогда да, вполне разумно проверить на factor != 0.0f
перед вызовом applyComplexAlgorithm(factor)
.
Сейчасто, стоит ли вам проверять значение меньше чем несколько эпсилонов перед использованием factor
, полностью зависит от того, что означает ваш код, и не может быть определено отдельно от предоставленного вами кода.
Если(как вы упомянули в другом комментарии) вы хотите использовать специальное значение 0.0f
в качестве дозорного значения, которое означает что-то конкретное (например, неспособность вычислить коэффициент), тогда да, сравнивать абсолютно безопасно, используя ==
,Например, использование следующего кода 0.0f
является детерминированным и никогда не подвергается какой-либо ошибке округления:
float calculateFactor()
{
int phase = moon_phase();
if (phase == FULL) { // whatever special case requires returning 0.0f
return 0.0f;
} else {
return 1.0 + (phase * phase); // something that is never 0.0f
}
}
float factor = calculateFactor();
if(factor != 0.0f)
applyComplexAlgorithm(factor);