Re: How to... Java
Pre nego što uradiš "if (povuk == pov)", uradi
System.out.println("Povuk: " + povuk + ", pov: " + pov);
I vidi da li su brojevi baš različiti, ili su blizu. U prvom slučaju ti ne valja algoritam, u drugom se radi o grešci u zaokruživanju.
Kod reprezentacije realnih brojeva na kompjuteru uvek može da postoji greška u zaokruživanju (vidi floating point na wikipediji), a pritom ako vršiš sabiranje (kao npr pov1 + pov2 + pov3), greška se samo povećava. Zato se preporučuje da se double i float vrednosti ne porede direktno sa == , nego sa nekom tolerancijom, na primer za toleranciju od 2%:
if ((povuk > pov * 0.98) && (povuk < pov * 1.02)) { ... }
|