Odejmowanie liczb Double

0

Witam

Mam problem z odejmowaniem liczb double. Dlaczego przy odejmowaniu liczb:

double x = 1321946.28;
double y = 1268364.15;

double z = x - y;

dostaje wynik 53582,1300000001.

Proszę o pomoc

0

Double ma 56 bitów mantysy. Zapisz sobie te liczby x i y w postaci binarnej i obetnij do 56 bitów znaczących. Potem odejmij je i zauważ, że wynik jest zgodny z tym co dostałeś.

0

Aha
Mniej więcej rozumiem. A co zrobić, żeby tego uniknąć i dostać liczbę z dwoma miejscami po przecinku (nie licząc zaokrąglania). Mniejsze liczby odejmują się raczej bez problemu

0

albo zastosować zaokrąglenie, albo użyj typu decimal
jeśli są to obliczenia finansowe zdecydowanie użyj decimal

0

zapisz sobie 0.2 binarnie, użyj kalkulatora online, zobaczysz, że nie da się. Dlatego musisz używać zaokrąglenia.

0

dostaje wynik 53582,1300000001.

wynik zostaw jak jest, a wyświetlaj go z dokładnością np. do dwóch miejsc po przecinku.

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