char Array -> umwandeln mit atof
-
Hallo!
Ich habe folgendes Probelm:
In einem char- Array liegen mir einzelne Zahlenwerte vor. Diese würde ich gerne mit atof() zu einer float Zahl umwandeln. Eine Zahl die in einer Zeile meines Arrays liegt könnete so aussehen: "-12.2345678e-04" oder "1.23456787654". Das Array ist zweidimensional und beinhaltet mehrere Zahlen: value[n][m]
WEr kann mir helfen?
Danke schon einmal im Vorraus!
-
Worin liegt das Problem?
Edit: Und wenn du dir nicht sicher bist, dass die Strings auch immer wohlgeformt sind, würde ich eher zu strtod() greifen.
-
OK vielleicht war das etwas umständlich ausgedrückt.
Momentan mache ich meine Umwandlung ziemlich kompliziert:
Mein Array heißt cleanCharValues[][] und ich zunächst alle Zahlen die vor dem Punkt stehen in double Zahlen um, multipliziere sie nach dem Zehnersystem und adiere sie dann nach fogelendem System:
Denken wir uns meine Zahl sei -12.45678E-02
Dann lese ich zunächst die "2" ein, danach die "1" und multipliziere sie mit 10.10 + 2= 12 ->> die Zahle vor dem Ounkt habe ich schon.
for(int m=punkt[n]-1; m>-1; m--) { x=cleanCharValues[n][m]; ptr = &x; num = atof(ptr); data= data + factor_m * num; factor_m = factor_m * 10; }
Das gleiche mache ich dann mit den Zahlen hinter dem Punkt. Wenn ein "E" auftaucht springe ich aus der Schrleife.
for(int o=punkt[n]+1; o<35; o++) { x=cleanCharValues[n][o]; ptr = &x; num = atof(ptr); if(cleanCharValues[n][o]=='E'){break;} else { factor_d = factor_d * 0.1; data = data + factor_d * num; } }
Danach adiere ich die Zahlen vor und nahc dem Punk:
12 + 0.345678 = 12.345678
Wenn noch ein Minus davor steht mulitpliziere ich alles mit -1 und bei dem "E" verwende ich die pow() Funktion.
Ich finde das mache ich alles ziemlich umständlich. Das muss doch irgendwie einfacher gehen.