Zdravím, prosím vás mohl by mi někdo vysvětlit toto?
>>>print (10**22+1000000.0)-10**22
0.0
>>>
Proč sčítání a odčítání nejsou komutativní?
děkuji!
problem bude v presnosti desetinnych cisel.. kdyz tam das 10 milionu, tak uz to nehodi aspon 0
proste milion je pod rozlisovaci schopnost cisla s desetinnou carkou, kdyz pouzivas tak velky hodnoty
#1 Lukáš
Musíš dát pryč tu desetinnou tečku a nulu.
print (10**22+1000000)-10**22
1000000
Proč to tak je? Odpovím hádankou: Vzdálenost Země od Slunce je 150 miliónů kilometrů. Kolik to bude, když k této vzdálenosti přidáš jeden metr?
#4 Lukáš
Teoreticky za tím je IEEE 754.
Každé číslo typu float nebo double je uvnitř převedeno do tvaru
m * 2 ** n
kde m je číslo v rozsahu <1..2) a n je celé číslo. Říká se tomu normalizace čísla v pohyblivé řádové čárce. Přesnost tohoto převodu je dána typem float nebo double a je v rozsahu tuším 6-14 platných číslic.
Tyto datové typy jsou určeny pro inženýrské výpočty, ale vůbec se nehodí pro finanční výpočty. Pro finance se používá typ decimal.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku