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 (Jan 14 '15)Ahá. To je přesně to, co mi unikalo! Děkuji.
elznima1 (Jan 14 '15)Ok, přidám to jako odpověď.
Jan Rubín (Jan 14 '15)