#programowanie #naukaporgramowania #protip

Jeśli w C masz 2 liczby float lub double to używanie == to zły pomysł
wynika to z błędu słowa maszynowego (spradz sobie czy 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 == 0.3*3 pewno nie będzie)
Zamiast
a==b użyj ABS(a-b) < Epsilon gdzie Epsilon to jakaś bardzo mała wartość służąca za dokładność porównania;
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

wynika to z błędu słowa maszynowego


@wytrzzeszcz: Nie, wynika to bezpośrednio z arytmetyki liczb zmiennoprzecinkowych.

a==b użyj ABS(a-b) < Epsilon gdzie Epsilon to jakaś bardzo mała wartość służąca za dokładność
  • Odpowiedz