Odčítání double v C
Asi by to měla být základní znalost, avšak nějak mi to stále uniká...
Inicializace:
double d = 4.5 - 4.5F;
double dd = 4.7 - 4.7F;
Výstup po printf("d %2.20f\n dd %2.20f\n", d,dd); je:
d 0.00000000000000000000
dd 0.00000019073486345889
Chápu, že nemůžu floaty/doubly porovnávat stejně jako celá čísla, avšak u tohoto příkladu asi nechápu proč se toto děje.
Je to tím, že 4.7 má v binární soustavě nekonečný periodický rozvoj, kdežto 4.5 ne. Proto ti tam vzniká zaokrouhlovací chyba.
Jan Rubín ( 2015-01-14 13:10:53 +0100 )editAhá. To je přesně to, co mi unikalo! Děkuji.
elznima1 ( 2015-01-14 13:15:53 +0100 )editOk, přidám to jako odpověď.
Jan Rubín ( 2015-01-14 13:17:26 +0100 )edit