Es sin duda segura, pero usted tiene que considerar lo que significa para sus algoritmos. Si su algoritmo usa factor
como divisor (y no verifica si divide por cero), entonces sí, es perfectamente razonable verificar factor != 0.0f
antes de llamar al applyComplexAlgorithm(factor)
.
Ahora, independientemente de si debe o no verificar un valor inferior a algunos epsilon antes de usar factor
, es totalmente lo que significa su código y no se puede determinar de forma aislada con el código que ha proporcionado.
Si (como mencionó en otro comentario) desea utilizar el valor especial 0.0f
como un valor centinela que significa algo específico (como la imposibilidad de calcular un factor), entonces sí, es absolutamente seguro comparar usando ==
. Por ejemplo, el uso del siguiente código de 0.0f
es determinista y nunca está sujeta a ningún tipo de error de redondeo:
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);
No acepto las respuestas solo por el hecho de tener una respuesta aceptada en mi pregunta, realmente tiene que haber una respuesta que encuentre responde la pregunta completamente. –