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
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
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ś.
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
albo zastosować zaokrąglenie, albo użyj typu decimal
jeśli są to obliczenia finansowe zdecydowanie użyj decimal
zapisz sobie 0.2 binarnie, użyj kalkulatora online, zobaczysz, że nie da się. Dlatego musisz używać zaokrąglenia.
dostaje wynik 53582,1300000001.
wynik zostaw jak jest, a wyświetlaj go z dokładnością np. do dwóch miejsc po przecinku.