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!
TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
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.
Zjistit počet nových příspěvků
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
































© 2003–2026 Programujte.com