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
