Witam,
Chcę zamienić stringa na liczbę zmiennoprzecinkową. Teoretycznie nic prostszego:
liczba=strtod(s,NULL);
lub
sscanf(s,"%f",&liczba);
lub
liczba=atof(s);
Aż trzy funkcje i żadna z nich nie działa poprawnie.
Pierwsza zwraca liczbę ok 169xx.0000 (oscyluje delikatnie w zależności od wejścia). Pozostałe funkcje zwracają zawsze zero.
Dodatkowo sprawdzam wartość zmiennej liczba if'em i wyświetlam stosowny komunikat np: if (z==3.14) lcd(10,2," ok"); else lcd(10,2,"err");
To też nic nie daje. Zawsze jest "err".
funkcja obsługi lcd jest napewno dobra bo normalnie wyświetla wpisane floaty. (Oczywiście po wcześniejszym przemieleniu float na char za pomocą funkcji dtostrf(liczba,5,6,bufor); )
Czy ktoś ma pojęcie co może być grane?
Dodam że w C++ (Builder 6.0) wszystkie 3 funkcje działają normalnie. Czy problem leży w kompilatorze? Czy w języku programowania?
Chcę zamienić stringa na liczbę zmiennoprzecinkową. Teoretycznie nic prostszego:
liczba=strtod(s,NULL);
lub
sscanf(s,"%f",&liczba);
lub
liczba=atof(s);
Aż trzy funkcje i żadna z nich nie działa poprawnie.
Pierwsza zwraca liczbę ok 169xx.0000 (oscyluje delikatnie w zależności od wejścia). Pozostałe funkcje zwracają zawsze zero.
Dodatkowo sprawdzam wartość zmiennej liczba if'em i wyświetlam stosowny komunikat np: if (z==3.14) lcd(10,2," ok"); else lcd(10,2,"err");
To też nic nie daje. Zawsze jest "err".
funkcja obsługi lcd jest napewno dobra bo normalnie wyświetla wpisane floaty. (Oczywiście po wcześniejszym przemieleniu float na char za pomocą funkcji dtostrf(liczba,5,6,bufor); )
Czy ktoś ma pojęcie co może być grane?
Dodam że w C++ (Builder 6.0) wszystkie 3 funkcje działają normalnie. Czy problem leży w kompilatorze? Czy w języku programowania?
