logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Kod w C do dzielenia liczb zmiennoprzecinkowych i wyświetlania wyniku na LCD

Janko Muzykant 2 30 Maj 2008 13:58 2192 6
REKLAMA
  • #1 5197307
    Janko Muzykant 2
    Poziom 10  
    Posty: 13
    Mam problem z wykonaniem prostego dzielenia (tzn dla mnie trudnego)
    a mianowicie :

    (100/1,229) = wynik;

    potrzebuję fragmentu kodu w c który potrafi to obliczyć i wynik pokazać na wyświetlaczu : fragment mojego kodu :

    double wynik_adc;

    wynik_adc=((value-101)/(1,229));
    lcdGoTo(20, 3);
    sprintf(text,"%e",wynik_adc ) ;
    lcdWriteString(text);
    ---------------------------------
    na wyświetlaczu widzimy tylko "?"
    z góry dziękuję za pomoc .piszę pod WINAVR
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #3 5197408
    Balu
    Poziom 38  
    Posty: 4397
    Pomógł: 323
    Ocena: 48
    Ja bym powiedział, że potrzebujesz zmienić program na nieużywający liczb zmiennoprzecinkowych... a już dzielenia na tych liczbach w ogóle:>
  • #4 5197417
    Janko Muzykant 2
    Poziom 10  
    Posty: 13
    wszystko gra ,ale teraz mam jeszcze inne pytanko odnosnie zaokrąglania liczb chciałbym aby wynik był zaokraglany zgdonie z przyjetymi zasadami
    tzn 82,1806 do 82 lub do 82,2 -ma ktos pomysł jak to zrobić?
  • REKLAMA
  • #5 5197427
    fantom
    Poziom 31  
    Posty: 1649
    Pomógł: 108
    Ocena: 41
    Jak chcesz zaokraglac do calkowitych to po co ci floaty, a jak chcesz zaokraglac floaty to np %.2e - dwa znaczace znaki po przecinku. Poszukaj sobie dokumentacji do formatowania printfa.
  • REKLAMA
  • #6 5197445
    Janko Muzykant 2
    Poziom 10  
    Posty: 13
    drugie pytanie (odnośnie zaokrąglania) dotyczy innego projektu, wielkie dzięki za informację
  • #7 5197660
    szelus
    Poziom 34  
    Posty: 1508
    Pomógł: 315
    Ocena: 53
    Co do zaokrąglania, wystarczy dodać 0.5 przed konwersją do int-a (odjąć dla liczb ujemnych).

Podsumowanie tematu

✨ Problem dotyczy wykonania dzielenia liczb zmiennoprzecinkowych w języku C oraz wyświetlenia wyniku na wyświetlaczu LCD w środowisku WINAVR. Użytkownik stosował wyrażenie z błędnym separatorem dziesiętnym (1,229 zamiast 1.229) oraz zauważył, że na LCD pojawia się znak "?". Rozwiązaniem jest dołączenie odpowiednich bibliotek obsługujących formatowanie liczb zmiennoprzecinkowych w printf, m.in. poprzez linkowanie z opcjami: -Wl,-u,vfprintf -lprintf_flt -lm. Alternatywnie zasugerowano unikanie liczb zmiennoprzecinkowych w programie. W dalszej dyskusji poruszono temat zaokrąglania wyników, gdzie wskazano na użycie formatowania w sprintf (np. %.2e) lub dodanie 0.5 przed konwersją do typu całkowitego, aby uzyskać poprawne zaokrąglenie zgodne z zasadami matematycznymi.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA