[elektro] mikroC PRO for PIC32 ceil probléma

Bánhidi István banhidi.istvan at gmail.com
Tue Nov 19 11:56:53 CET 2013


Milyen chipet használsz?


2013. november 16. 19:31 Nagy Sándor írta, <nasa at 68.hu>:

>
>
> Sziasztok.
>
> nem tudom mi lehet a gond, de már kiborultam tőle.
>
> adott egy float változóban tárolt szám, ezt szeretném 2 tizedesre
> kerekíteni.
>
> ez ugye ennyi lenne:
>
> kerekített_ket_tizedesre = (ceil(kerekítendo_float * 100)) /100);
>
> pl 22.95666 lenne 22.96
>
> a legfurább dolog, hogy kb 10 esetből nyolcszor jól csinálja, kétszer
> nem.
>
> amikor nem jó akkor eleve nem kát tizedest ad vissza, hanem az eredeti
> számnak megfelelő tizedesekkel, de ráadásul nem is azt:
>
> egy I2C-s hőmérsékletet olvasok ki, ez teszem egy signed int -be
>
> ezzel az alábbi műveletet kell végezzem:
>
> float_eredmeny = (olvasott_int/480)+42,5
>
> ez a táblázat első sora, ma
>
> olvasott_int float_eredmeny float_kerekitett
>
> -9455 22,80208 22,80999
>
> -9219 23,29375 23,29999
>
> -9379 22,96041 22,96999
>
> minden esetben a plusz tizedes jegyek az a 3 db kilences.
>
> a float_eredmeny -t FloatToStr() függvénnyel konvertálom át
>
> lehet a hiba oka a FloatToStr függvény, hogy az szedi össze valahonnan a
> kilenceseket?
>
> de amikor jól működik akkor meg miért nem?
>
> --
>
> Üdvözlettel: Nagy Sándor
>
> -----------------------------------------
>           elektro[-flame|-etc]


More information about the Elektro mailing list