Prosty kalkulator gui

0

Witam,
Robie prosty kalkulator w gui Java, pobieram liczby z JtextField i dodaje je do siebie, w momencie dodania liczb zmienno przecinkowych np 3,4 i 4,3 wyniki jest 7,700003 jak temu zaradzić zeby dodawanie było prawidłowe

3

Jest prawidłowe. Należy się douczyc na temat niedokładności zmiennoprzecinkowej reprezentacji liczb. Istnieją liczby które binarnie są okresowe po prostu. To tak jakbyś sie dziwił że 1/3+1/3+1/3 to jest 0.99999(9) i burzył że jak z tego uzyskać "prawidłową" liczbę czyli 1. 1/3 nie ma dokładnej dziesiętnej reprezentacji i jest 0.(3) i nic na to nie poradzisz.

0

Mam rozumieć, że nie da się temu zaradzić ?

0

Możesz formatować wyjście, tzn. wyświetlać tylko parę miejsc po przecinku.
Z ciekawości, jak wykonujesz pobieranie liczb z pola tekstowego? Użyłem kilku sposobów i każdy dał wynik 3,4 + 4,3 = 7.699999999999999.

0

Wiem o co chodzi z niedokładnością, dostałem takie zadanie na laboratorium aby rozwiązać ten problem, prowadzący zaproponował nam rozbicie tej liczby i dodanie np 3,4 + 4,3 w sposób następujący (4+3)+(0,3+0,4) lub sprowadzić je na ułamki proste.

0

Zmienić typ na BigDecimal?

0

wtedy wyświetla 7.700000286102294921875

0
  1. Obliczenia robisz na BigDecimal.
  2. Wyświetlasz jako String.

Jeżeli zależy Ci na dokładności, to nie używaj typów zmiennoprzecinkowych.

0

Wychodzi Ci 7.699999999999999 ponieważ używasz typu double

0

A jakiego Ty używasz? Z BigDecimal to zmyślasz http://ideone.com/aUoIkR

0

float, nie zmyślam bo mi na tym nie zależy. Ja mam taki kod dla BD
BigDecimal liczbaBD1 = new BigDecimal(num1);
BigDecimal liczbaBD2 = new BigDecimal(num2);
BigDecimal sumaBD = liczbaBD1.add(liczbaBD2);

0

Jakiego typu są num1 i num2? To powinny być Stringi.

0

Dzięki ;) Pomogło

1 użytkowników online, w tym zalogowanych: 0, gości: 1