Konvertierung char -> double bei wissenschaftlichem Format im String
-
noobLolo schrieb:
sollte eigentlich mit sscanf() gehen
double dd; char *wiss = "1.000E+00"; sscanf(wiss,"%f",&dd); printf("%f",dd);
lg lolo
ups die format strings müßten doch bei double "%lf" heißen
lg lolo
-
-
Danke, danke.
Habe übrigens festgestellt, dass die Daten die ich konvertieren möchte im Format
char wiss = "1,000E+00"
sind. Also leider mit einem Komma und nicht mit Punkt.
Kriegt das sscanf trotzdem hin? Habe hier nämlich gerade mit Problemen zu kämpfen.
-
Richtige Lokale setzen.
-
Janjan schrieb:
Richtige Lokale setzen.
Damit kenne ich mich auch noch nicht aus.
Ich verwende meinen Code in einer Umgebung der Dezimalpunkt benötigt.Den char-String lese ich aber aus einer CSV-Datei aus, die (dummerwiese) ein Dezimalkomma hat.
Habe im "C von A bis Z" gerade nichts über Lokalität gefunden.
Wie muss ich mir das vorstellen? Lokalität nur fürs Auslesen auf Komma umstellen und dann wieder auf Punkt zurücksetzten? Ohje ...
-
sega schrieb:
Janjan schrieb:
Richtige Lokale setzen.
Damit kenne ich mich auch noch nicht aus.
Ich verwende meinen Code in einer Umgebung der Dezimalpunkt benötigt.Den char-String lese ich aber aus einer CSV-Datei aus, die (dummerwiese) ein Dezimalkomma hat.
Habe im "C von A bis Z" gerade nichts über Lokalität gefunden.
Wie muss ich mir das vorstellen? Lokalität nur fürs Auslesen auf Komma umstellen und dann wieder auf Punkt zurücksetzten? Ohje ...
Kommas durch Punkte ersetzen mit strchr()?
-
sega schrieb:
Habe im "C von A bis Z" gerade nichts über Lokalität gefunden.
Wie muss ich mir das vorstellen? Lokalität nur fürs Auslesen auf Komma umstellen und dann wieder auf Punkt zurücksetzten? Ohje ...
-
Ok, Danke.
Die Sache mit dem Punkt und Komma wäre dann geklärt.Jetzt kriege ich es immer noch nicht hin, den Wert richtig auszulesen.
double C1[100]; int reactionNumber = 2; sscanf(pLineToken[4],"%E",&C1[reactionNumber-1]);
Liefert als Ergebnis für C1[reactionNumber-1] = 978433815.
Der char-Werte hinter dem pointer pLineToken[4] ist aber "8.000E-04".Was ist denn da faul?
-
Dein Formatstring ist faul.
Entweder "%E" oder "%lf", das ist Wurst, denn intern gleich.
-
Big Brother schrieb:
Dein Formatstring ist faul.
Entweder "%E" oder "%lf", das ist Wurst, denn intern gleich.Sorry, steht %E drin! Problem bleibt bestehen.
-
Dann steht vermutlich nicht das drin, was du angibst, denn was die Formatstrings und die Parmeter betrifft, ist die Syntax ok.
Bsp.:double number = 0.0; char* s = ".1E-1"; sscanf ( s, "%lf", &number ); printf ( "%lf\n", number ); printf ( "%E\n", number ); sscanf ( s, "%E", &number ); printf ( "%lf\n", number ); printf ( "%E\n", number );
-
Ja stimmt.
Habe die Ausgabe nicht angepasst!
Dacht mit %d kann ich mir das ganze dann ausgeben lassen.