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