[python] chyba v kodu

RMiklos na pss.sk RMiklos na pss.sk
Čtvrtek Květen 3 18:09:49 CEST 2007


Ked si spustis priklad, ktory som ti prave zaslal vidis, ze dava spravne 
vysledky:

-5.0        0           0x0
-4.9      656         0x290
-4.8     1311         0x51f
-4.7     1967         0x7af
....
-0.3    30802        0x7852
-0.2    31457        0x7ae1
-0.1    32113        0x7d71
-0.0    32768        0x8000
+0.1    33423        0x828f
+0.2    34079        0x851f
+0.3    34734        0x87ae

+4.6    62914        0xf5c2
+4.7    63569        0xf851
+4.8    64225        0xfae1
+4.9    64880        0xfd70
+5.0    65535        0xffff

Takze v com vidis problem?





Radek Machulka <radek.machulka na gmail.com> 
Sent by: python-bounces na py.cz
03.05.2007 18:00
Please respond to
Konference PyCZ <python na py.cz>


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] chyba v kodu






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
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓ© 
Prvá stavebná sporiteµňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 



Daląí informace o konferenci Python