Guten Tag,
ich benutze den CCS compiler und schreibe für den 18F4550 ein Programm.
Nun stehe ich vor dem Problem das ich 4 Werte konvertieren muss.
1. Time --> 152607
2. Breitengrad -> 4563.2354
3. Längengrad -> 01464.3215
4. Höhe -> 470.02
Diese in einem char array gespeicherten Werte will ich in floats
umwandeln.
Habe dazu folgende Methode geschrieben:
1 | float stof(char *convert) {
|
2 | float converted;
|
3 | int8 i = 0;
|
4 | int1 coma = 0;
|
5 | float hilf = 0.1;
|
6 | while(convert[i] != '\0' ) { // nächstes Zeichen
|
7 | if(convert[i] != '.' && coma == 0) {
|
8 | converted = 10 * converted + (convert[i] - '0' );
|
9 | } else {
|
10 | coma = 1;
|
11 | if(convert[i] != '.') {
|
12 | converted += (convert[i] - '0') * hilf;
|
13 | hilf = hilf * 0.1;
|
14 | }
|
15 | }
|
16 | i++;
|
17 | }
|
18 | return converted;
|
19 | }
|
Nun habe ich das Problem, dass der 3. konvertierte Werte (Längengrad)
immer 0.0000 ergibt oder -732193.23 (also unsinnige Zahl), trotz einem
zugewiesenen richtigen Wert welcher nicht 0 ist!
Ich hoffe mir kann wer helfen! :)