Temat: JAVA a odejmowanie Bug?
Witam,
Dzięki za wypowiedzi w imieniu moim i osoby która mnie poprosiła o wrzucenie tego na forum.
Problemu nie badałem, szczegółowo osobiście gdyż nie miałem warunków.
Z grzeczności osoba która mnie poprosiła, twierdziła że siedziała przy tym długo , a ja nie miałem czasu to wrzuciłem to na forum.
I nie chodzi tutaj o liczbe 3000000004 a o 1.4-1.0 = 0,3999 itd.
Problem występuje w tym programie, właśnie dostałem kod.
Podajemy liczbę 1.4 i ma nam wydać z pieniędzy które mamy w tablicy M.
final int[] M = {500,200,100,50,20,10,5,2,1};
int zl, gr, r, i = 0;
System.out.println("Podaj reszte..");
System.out.print("w zlotych: ");
double odp=Input.readDouble();
zl=(int)odp;
gr=(int)((odp-zl)*100);
System.out.print("Reszta: ");
r = zl*100 + gr;
while (r > 0)
{
if (r >= M[i])
{
System.out.print(M[i]/100.0 + " ");
r = r - M[i];
}
else
i++;
}
System.out.println();
}
W powyższym programie mnożąc 0,3999 zł przez 100 i rzutując na int. Otrzymujemy nie 40 groszy a 39 groszy. Stąd ten problem został zauważony. Wydaje 1zł 39gr , zamiast 1zł 40gr.
Osoba która poprosiła mnie o wrzucenie na forum bardzo dziękuję.