Keresés

Új hozzászólás Aktív témák

  • maestro87

    őstag

    válasz zka67 #5472 üzenetére

    Szia, nem mondtam, hogy csak 16 bites számokat kezel, csak azt, hogy amit pl. windows-on beírsz int változót az alapból talán 24 vagy 32 bites emlékeim szerint, míg itt alapból csak 16 bites és előjeles. Előjel nélkülire %u-t kell használni, és ezek a \n, \r-ek sem igazán működnek itt. :N Ez utóbbihoz talán a write_lcd függvényemet kellene módosítanom.

    A 6 tizedes pontosságot hogy számoltad ki, vagy hol írja?
    Hogy számolod ki pl. a 24 bites float maximális értékét 3 tizedesjegy pontosság esetén?

    Amúgy #pragma --FLOAT=32 utasítással most lefordult, mindjárt kipróbálom a változást, de mint említettem már, jelenleg csak egy tizedesjegy pontosságra van szükségem (0.0-tól 100.0-ig), amit most is ki tudok íratni %f-fel gond nélkül, csak ennek az egész számmal való szorzatát már nem (pl. 6 milliót). Tehát az eredményt már kerekíteni kellene egész típusra!
    És ez a 32 bitre való állítás a fent általam leírt hibásan printf-felt egész értékeket még nem befolyásolja.

    Lehet, hogy még átállok az 10-zel, 100-zal, 1000-rel való szorzásra/osztásra, de a milliókat akkor sem fogom tudni megjeleníteni. :F

    Egyébként még azt nem értem, hogy mi a különbség a 32 bites float, 32 bites double és a 32 bites long double között. :F

    update: 32-bites float esetén is ugyanezt kapom: printf("%f", 6123456.0); // --> 6123520.000000
    Ki kellene számolni már csak kíváncsiságból is, hogy meddig pontos, csak nem tudom hogy kell. :F Biztos a milliós nagyságrend már nem tetszik neki, de még a százezres sem. Illetve megnéztem az előbb, a %u is csak 65535-öt tud kiírni túlcsordulás nélkül, long-ra (32-bit) pedig végre megtaláltam, hogy a %lu-t kell használni (eddig %ul-lel próbáltam) és ugyanez jó unsigned short long-ra is. :C Bár utóbbi esetben szerintem feleslegesen felkonvertálja a printf függvény a short long-ot 32-bites long-ra, de most annyi baj legyen.:)

Új hozzászólás Aktív témák