Mám ten pocit, že se doporučovalo při porovnávání dvou čísel použít nějakou 
odchylku, v tomto případě pravděpodobně nějak takhle:

def float_is_less(a, b, odchylka = 0.0000001):
   return a < (b - odchylka)

Ještě poznámka: problém není s desetinnými čísly v Pythonu ale obecně s desetinnými čísly 
na počítačích. Základní formát desetinných čísel není "absolutně přesný", 
protože někdy není možné uložit desetinné číslo úplně přesně kvůli převodu do dvojkové 
soustavy (může vycházet perioda, kterou počítač musí zaokrouhlit). Pokud člověk potřebuje 
dostat hodnotu, kterou očekává, je lepší použít celočíselný typ reprezentující např. 
procenta nebo jiné zlomky celku.

2009/5/6 MICHÁLEK Jan Mgr. <[email protected]>:
P.S.:
Když použiju math.fabs, tak to dělá to samé.
________________________________
From: [email protected] [mailto:[email protected]] On Behalf Of
MICHÁLEK Jan Mgr.
Sent: Wednesday, May 06, 2009 6:28 PM
To: [email protected]
Subject: [python] Porovnávání v py 0.2<0.2 True????

omlouvám se za předchozí prázdný email, omylem jsem to odeslal prázdné
 
Řeším následující problém:
Zpracovávám dotazy z db (MS SQL) a potřebuji vybrat ze dvou čísel to, které
je bližší k cílové hodnotě,
v podmínce mám následující výraz
(abs(fv-tp)<abs(tv-tp))
fv i tv jsou 0.2, přesto mi to vrací True, fv je suma ze dvou záznamů. tv
jen z jednoho.
 
Pamatuju si, že jsem v nějakém článku našel popis problému s desetinými
čísly v pythonu a byl tam i popis řešení, ale nemůžu to dohledat.
když použiju:
print repr(abs(fv-tp)),repr(abs(tv-tp))
 
tak mi to vrátí:
0.019999999999999907 0.020000000000000018
 
nechci použít zaokrouhlování, co s tím můžu udělat?
 
Děkuji Jelen
 

__________ Informace od ESET NOD32 Antivirus, verze databaze 4056 (20090506)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz


__________ Informace od ESET NOD32 Antivirus, verze databaze 4056 (20090506)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz


__________ Informace od ESET NOD32 Antivirus, verze databaze 4056 (20090506)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem