Witam, napotkałem w swoim projekcie na dziwny wręcz dla mnie nie wytłumaczalny problem dotyczący mnożenia liczb zmiennoprzecinkowych. Poniżej kod który generuje problem:
Następnie zmienną dana wyrzucam sobie rs232 na komputer i otrzymuję jakiś kosmos. Dla error wynoszącego 0 i wszystkie liczby ujemne jest ok np tak:
error = 0 ->> dana = 0
error = -10 ->> dana = -40
error = -50 ->> dana = -200
kosmos się dzieje po podaniu liczby dodatniej. Wyniki robią się jakieś okropnie duże i zawsze ujemne. Np error =50 ->> dana = -26000.
Używam kompilatora Atmel Studio 6.2 i programuje całość w C. Wszystko dosłownie wszystko w kodzie działa poza tym mnożeniem. Myślałem że może problem jest w transmisji wyniku do komputera ale ewidentnie jest źle mnożona bo potem dla ( error dodatniego ) cały kod wariuje przez tak duże ujemne wartości.
Kod: C / C++
Następnie zmienną dana wyrzucam sobie rs232 na komputer i otrzymuję jakiś kosmos. Dla error wynoszącego 0 i wszystkie liczby ujemne jest ok np tak:
error = 0 ->> dana = 0
error = -10 ->> dana = -40
error = -50 ->> dana = -200
kosmos się dzieje po podaniu liczby dodatniej. Wyniki robią się jakieś okropnie duże i zawsze ujemne. Np error =50 ->> dana = -26000.
Używam kompilatora Atmel Studio 6.2 i programuje całość w C. Wszystko dosłownie wszystko w kodzie działa poza tym mnożeniem. Myślałem że może problem jest w transmisji wyniku do komputera ale ewidentnie jest źle mnożona bo potem dla ( error dodatniego ) cały kod wariuje przez tak duże ujemne wartości.
