[ kiss_my @ 28.09.2011. 09:38 ] @
Evo ovako,
naleteo sam na jedan Javin BUG...
o čemu se radi:

probajte da podelite 30864/7
kao rezultat dobićete 4409.0 umesto 4409,1428571428571428571428571429
koliko bi ste npr. dobili kada bi ste ova dva broja podelili u Windows-ovom kalkulatoru.

Ako npr. podelite 30.864/7 onda ćete dobiti tačnu vrednost : 4.409142857142857

Pošto sam početnik, navešću Vam tačno kako mi izgleda main metoda:


Code:
public static void main(String[] args) {
    double bb=0;
    bb=30864/7;
    System.out.println(bb); 
}



Od IDE okruženja koristim :
NetBeans IDE 7.0

Product Version: NetBeans IDE 7.0 (Build 201104080000)
Java: 1.6.0_26; Java HotSpot(TM) Client VM 20.1-b02
System: Windows XP version 5.1 running on x86; Cp1250; sr_CS (nb)
Userdir: C:\Documents and Settings\ja\.netbeans\7.0

Interesuje me u čemu je problem:
- u samoj JAVI (da li je u pitanju samo verzija 7.0) ?
- u IDE okruženju (da li je u pitanju NetBeans 7.0) ?
- ili je u pitanju moj kod ?

I još nešto: Zašto Windows-ov kalkulator ima veću preciznost izračunavanja od precisnosti izračunavanja u Javi?

Molim hitan i ozbiljan odgovor !




[ 3way @ 28.09.2011. 09:47 ] @
U kodu.

bb = 30864f/7f
[ kiss_my @ 28.09.2011. 09:51 ] @
Hvala,ali....

[Ovu poruku je menjao kiss_my dana 28.09.2011. u 11:11 GMT+1]
[ kiss_my @ 28.09.2011. 09:59 ] @
Opet ima razlike između rezultata dobijenog u Javi i onog dobijenog u Windows-ovom kalkulatoru.

U prvom slučaju rezultat je : 4409.14306640625 (cod: bb=30864f/7f;)
ili čak 4409.142857142857 (cod: bb=30864d/7d;)

a u drugom : 4409,1428571428571428571428571429


Zašto?
Zna li neko?
[ dule_ns @ 28.09.2011. 11:10 ] @
Koristi BigDecimal
[ 3way @ 28.09.2011. 11:12 ] @
float zauzima 4 bajta, a double 8 (ako se ne varam)...Ako je pitanje zasto je double precizniji - to ti je odgovor. Predstavljanje decimalnih brojeva u racunari nije tako jednostavno kao predstavljanje celih i teoretski zahteva beskonacan prostor.