Witam
Nigdy nie działałem za zmiennym przecinku, ale teraz muszę policzyć nie za ciekawy wzór i muszę to zrobić na typie Double
Mam funkcję
Wywaliłem z niej wszystko, co nie jest absolutnie niezbędne, nawet parametry podałem jako zmienne zadeklarowane przed obliczeniami.
W innej procedurze tak obliczoną wartość wyświetlam na wyświetlaczu LCD. Procedura wyświetlania jest na pewno dobra - podawałem do niej liczby typu double i wszystko grało.
Ten sam wzór w MS Excelu daje wynik ok. -9,6, a przy użyciu ATMEGA64 wyświetla mi jakieś krzaki - więc program gdzieś się wywala
Próbowałem dzielić ten wzór na części i obliczać po kawałku, ale efekt jest dokładnie ten sam.
Może powinienem wiedzieć coś więcej na temat operacji zmiennoprzecinkowych, żeby zrobić to poprawnie - jeśli ktoś wie, czemu to nie działa to proszę o info, bo poważnie utknąłem.
Dzięki
Pozdrawiam i dobrego Nowego Roku
Nigdy nie działałem za zmiennym przecinku, ale teraz muszę policzyć nie za ciekawy wzór i muszę to zrobić na typie Double
Mam funkcję
double fp_calc(void)
{
double fp;
double HUMI=55;
double TEMP=293.15;
fp=((272.186*log(HUMI/100))+((6107.85384*TEMP)/(272.186+TEMP)))/(22.4433-log(HUMI/100)-(22.4433*TEMP)/(272.186+TEMP))-273.15;
return fp;
}
Wywaliłem z niej wszystko, co nie jest absolutnie niezbędne, nawet parametry podałem jako zmienne zadeklarowane przed obliczeniami.
W innej procedurze tak obliczoną wartość wyświetlam na wyświetlaczu LCD. Procedura wyświetlania jest na pewno dobra - podawałem do niej liczby typu double i wszystko grało.
Ten sam wzór w MS Excelu daje wynik ok. -9,6, a przy użyciu ATMEGA64 wyświetla mi jakieś krzaki - więc program gdzieś się wywala
Próbowałem dzielić ten wzór na części i obliczać po kawałku, ale efekt jest dokładnie ten sam.
Może powinienem wiedzieć coś więcej na temat operacji zmiennoprzecinkowych, żeby zrobić to poprawnie - jeśli ktoś wie, czemu to nie działa to proszę o info, bo poważnie utknąłem.
Dzięki
Pozdrawiam i dobrego Nowego Roku