Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

zasto mi dodaje 000000003, i kako da se toga resim?

[es] :: Java :: zasto mi dodaje 000000003, i kako da se toga resim?

[ Pregleda: 1064 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ngj
Nikolaj Gracev Jovanovic
Srbija

Član broj: 64117
Poruke: 12
*.rcub.bg.ac.yu.



Profil

icon zasto mi dodaje 000000003, i kako da se toga resim?29.08.2006. u 10:52

Pozdrav svima,

Kada uradim najprostije oduzimanje double vrednosti , vraća mi rezultat:

-----------------------------
Vrednosti promenljivih su...
i = 37
j = 42
x = 27.475
y = 7.22
Sabiranje...
i + j = 79
x + y = 34.695
Oduzimanje...
i - j = -5
j - i = 5
x - y = 20.255000000000003
y - x = -20.255000000000003
-----------------------------

Ako postavim da x bude dvocifren, takvih problema nema.
Da li bi mogao neko da mi odgovori zašto se to javlja, i kako da to rešim.


pozdrav i hvala unapred!



Ako sumnjate u kod, evo istog:






public class ArithmeticDemo {
public static void main(String[] args) {

//nekoliko brojeva
int i = 37;
int j = 42;
double x = 27.475;
double y = 7.22;
System.out.println("Vrednosti promenljivih su...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" x = " + x);
System.out.println(" y = " + y);

//sabiranje brojeva
System.out.println("Sabiranje...");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));

//oduzimanje brojeva
System.out.println("Oduzimanje...");
System.out.println(" i - j = " + (i - j));
System.out.println(" j - i = " + (j - i));
System.out.println(" x - y = " + (x - y));
System.out.println(" y - x = " + (y - x));

//Mno`enje brojeva
System.out.println("Mnozenje...");
System.out.println(" i * j = " + (i * j));
System.out.println(" x * y = " + (x * y));

//deljenje brojeva
System.out.println("Deljenje...");
System.out.println(" i / j = " + (i / j));
System.out.println(" x / y = " + (x / y));

//Deljenje po modulu
System.out.println("Deljenje po modulu...");
System.out.println(" i % j = " + (i % j));
System.out.println(" x % y = " + (x % y));

//mesanje tipova
System.out.println("Mesanje tipova...");
System.out.println(" j + y = " + (j + y));
System.out.println(" i * x = " + (i * x));
}
}

29.08.2006. u 10:52 

kaizen

Član broj: 83416
Poruke: 23
82.117.206.*

Sajt: rors.org


Profil

icon Re: zasto mi dodaje 000000003, i kako da se toga resim?29.08.2006. u 11:03
http://docs.python.org/tut/node16.html

ili ako želiš malo temeljnije:

http://docs.sun.com/source/806-3568/ncg_goldberg.html
29.08.2006. u 11:03 

ngj
Nikolaj Gracev Jovanovic
Srbija

Član broj: 64117
Poruke: 12
*.rcub.bg.ac.yu.



Profil

icon Re: zasto mi dodaje 000000003, i kako da se toga resim?29.08.2006. u 11:23
Ave !

Hvala na brzom odgovoru.
Generalno sam znao o cemu se radi, ali ne znam zasto VM ne resava taj problem kako treba. Trebalo bi da moze sama da se izbori sa tim, zar ne?

Sada ako ima nekoga da pomogne oko resavanja tog problema. Verovatno postoji neko jednostavnije podesavanje ili nesto drugo, da ja ne razmisljam svakog puta sta je on uradio. Ako ja moram svakog puta da se strecam, da li je on dodao 0000000x u decimalama, ....

Poz i hvala unapred svima!
29.08.2006. u 11:23 

lukeguy
Novi Sad

Član broj: 46545
Poruke: 325
*.smin.sezampro.yu.



Profil

icon Re: zasto mi dodaje 000000003, i kako da se toga resim?29.08.2006. u 21:01
mislim da samo predstavljanje binarnog broja u memoriji ne možeš nikako da "popraviš". eventualno možeš da koristiš veću preciznost. što se reprezentacije tiče, koristi neku metodu za formatiranje i biće sve ok.
29.08.2006. u 21:01 

bgd2500

Član broj: 55912
Poruke: 145
82.117.193.*



Profil

icon Re: zasto mi dodaje 000000003, i kako da se toga resim?01.09.2006. u 11:12
Koristi BigDecimal
01.09.2006. u 11:12 

kaizen

Član broj: 83416
Poruke: 23
82.117.206.*

Sajt: rors.org


Profil

icon Re: zasto mi dodaje 000000003, i kako da se toga resim?01.09.2006. u 11:32
Citat:
bgd2500: Koristi BigDecimal


Samo obavezno koristi String konstruktor!
http://java.sun.com/j2se/1.5.0...ath/BigDecimal.html#BigDecimal(double)


01.09.2006. u 11:32 

ngj
Nikolaj Gracev Jovanovic
Srbija

Član broj: 64117
Poruke: 12
*.rcub.bg.ac.yu.



Profil

icon Re: zasto mi dodaje 000000003, i kako da se toga resim?01.09.2006. u 12:39
Ave !

Jos jednom da se zahvalim na ukazanoj pomoci. Cenim to !

Pozdrav i svako dobro!
01.09.2006. u 12:39 

[es] :: Java :: zasto mi dodaje 000000003, i kako da se toga resim?

[ Pregleda: 1064 | Odgovora: 6 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.