Interakce s Pythonem – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Interakce s Pythonem – Python – Fórum – Programujte.comInterakce s Pythonem – Python – Fórum – Programujte.com

 

Lukáš
~ Anonymní uživatel
301 příspěvků
30. 11. 2014   #1
-
0
-

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!

Nahlásit jako SPAM
IP: 78.102.217.–
KIIV
~ Moderátor
+43
God of flame
30. 11. 2014   #2
-
+1
-
Zajímavé

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

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
30. 11. 2014   #3
-
+1
-
Zajímavé

#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?

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Lukáš
~ Anonymní uživatel
301 příspěvků
30. 11. 2014   #4
-
0
-

děkuji moc. Tak samozřejmě, první co jsem udělal bylo odstranění tečky. Spíš by mě zajímalo co je za tím teoreticky. děkuji za odpovědi!

Nahlásit jako SPAM
IP: 78.102.217.–
Kit+15
Guru
30. 11. 2014   #5
-
0
-

#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. 

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:221:5...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
hanpari0
Stálý člen
30. 11. 2014   #6
-
0
-

#4 Lukáš
Nemusíš jít ani do miliónů, stačí se nedopočítat do 10 :)

>>> 0.1*10 == sum(0.1 for i in range(10))
False

Nahlásit jako SPAM
IP: 178.72.234.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Interakce s webem — založil little0inker

Hra - interakce se soupeřem — založil Vorel

Help s pythonem — založil

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý