Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

atmega128 - Zmienna float jak zmniejszyć dokładność

prociomen007 12 Gru 2014 19:59 483 2
  • #1 12 Gru 2014 19:59
    prociomen007
    Poziom 18  

    Witam, piszę sobie pewien program który wykonuje pewne obliczenia matematyczne i ostatecznie zwraca je do zmiennej float nazwanej wynik

    Otrzymany wynik wykorzystywany jest potem do sterowania dalszym programem i mam problem z jego dokładnością. Kilka nieistotnych dalekich miejsc po przecinku mi 'pływa' i niszczy działanie programu. Zastanawiam się jak to zniwelować. Jak wykorzystywać z zmiennej float tylko dwa miejsca po przecinku?

    0 2
  • #3 12 Gru 2014 20:30
    tomekgl
    Poziom 15  

    Od avr-gcc w wersji 4.8 wsparcie dla stałoprzecinkowych liczb jest z pudełka.
    https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
    Deklarujesz zmienną typu _Accum i możesz korzystać z wbudowanych operatorów (+-*/) a kompilator sam podstawi funkcje z tej przydługiej listy:
    https://gcc.gnu.org/onlinedocs/gccint/Fixed-point-fractional-library-routines.html
    A jeśli Twoje operacje to głównie +/- i porównania to zrób tak jak pisze olelek, kod będzie najmniejszy i najszybszy.

    0