[elektro] mikroC PRO for PIC32 ceil probléma

Nagy Sándor nasa at 68.hu
Sat Nov 16 19:31:45 CET 2013


 

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
 


More information about the Elektro mailing list