Dne čtvrtek 03 května 2007 [EMAIL PROTECTED] 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 <[EMAIL PROTECTED]>
> Sent by: [EMAIL PROTECTED]
> 03.05.2007 17:22
> Please respond to
> Konference PyCZ <[email protected]>
>
>
> To
> [email protected]
> 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
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem