[python] chyba v kodu

Radek Machulka radek.machulka na gmail.com
Čtvrtek Květen 3 18:00:15 CEST 2007


Dne čtvrtek 03 května 2007 RMiklos na pss.sk napsal(a):
> Mozno ze vysledok je iny ako ocakavas preto, lebo Python deli cele cisla
> celociselne
>
> from math import *
> def f(inp):
>   print ((inp + 5) / 10)
>   print (((inp + 5) / 10) * 65535)
>   print int(ceil(((inp + 5) / 10) * 65535))
>   return hex(int(ceil(((inp + 5) / 10) * 65535)))
>
> potom
> print f(-3)
> dava toto
> 0
> 0
> 0x0
>
> ale
> print f(-3.0)
> dava toto:
> 0.2
> 13107.0
> 13107
> 0x3333
>
>
>
>
> Radek Machulka <radek.machulka na gmail.com>
> Sent by: python-bounces na py.cz
> 03.05.2007 17:22
> Please respond to
> Konference PyCZ <python na py.cz>
>
>
> To
> python na py.cz
> cc
>
> Subject
> [python] chyba v kodu
>
>
>
>
>
>
> Zdravim,
> mam D/A prevodnik pracujici v rozsahu +-5V. Rizeni probiha prostrednictvim
>
> serioveho portu. Vlastni nastaveni napeti se provadi odeslanim
> hexadecimalniho cisla na prevodnik tak, ze:
> 0x0000 --> -5 V
> 0x8000 -->  0 V
> 0xFFFF -->   5 V,
> mezi tim je zavislost linearni.
> Vymyslel jsem kod:
> 'hex(int(ceil(((inp + 5) / 10) * 65535)))'.
> Pracuje jak ma, jen v intervalu cca (-5 ; -4.735) mi to vraci nesmysly.
> Nemam zdani cim by to mohlo byt, implementace stejnehoi kodu v jinych
> jazycich
> funguje spravne.
> Predem dik za odpovedi
> Radek
>
> P.S.: 'inp' je vstupni promena funkce provadejici prepocet (pozadovane
> napeti)
> a je typu float.

Tak tim to nebude, typy jsem samozrejme zkousel vselijak prohazet a vysledek 
je stale stejny. Me proste jen prekvapuje, ze tato chyba se vyskytuje jen v 
teto casti intervalu.
Problem bude nekde v praci s datovymi typy, to ano, ale asi nekde jinde...

-- 
Linux khoi 2.6.20-15-386 #2 Sun Apr 15 07:34:00 UTC 2007 i686 GNU/Linux


Další informace o konferenci Python