to z pewnością bezpieczny, ale trzeba wziąć pod uwagę, co to znaczy dla algorytmów. Jeśli Twój algorytm używa factor
jako dzielnika (i nie sprawdza samego dzielenia przez zero), to tak, przed wywołaniem factor != 0.0f
należy sprawdzić, czy nie ma on wartości .
Teraz, niezależnie od tego, czy powinieneś sprawdzać wartość mniejszą niż niektóre epsilon przed użyciem factor
, jest całkowicie zgodne z tym, co oznacza twój kod i nie można go ustalić w oderwaniu od dostarczonego kodu.
Jeśli (jak nawiązywałeś do innego komentarza) chcesz użyć specjalnej wartości 0.0f
jako wartości wartownika, która oznacza coś konkretnego (np. Niezdolność do obliczenia współczynnika), to tak, jest to całkowicie bezpieczne do porównania przy użyciu ==
. Na przykład, należy użyć następującego kodu z dnia 0.0f
jest deterministyczny i nie podlega jakiejkolwiek błąd zaokrąglenia:
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);
Nie akceptuję odpowiedzi tylko ze względu na posiadanie zaakceptowanej odpowiedzi w moim pytaniu, tak naprawdę musi istnieć odpowiedź, na którą w pełni odpowiadam. –