float in string?
-
Das Problem ist zu verhindern das die expotential Schreibweise verwendet wird, aber auch keine überflüssigen Nullen vorhanden sind.
Und das geht mir jetzt echt auf den Kecks das ich das nicht hinbekomme.
-
Huhu, ich habe jetzt endlich eine funktionierende Lösung (auch mit negativen Zahlen):
double calcNum = 1234567.8; calcNum += 1.1; sprintf(text, "%lf", calcNum); for(int a = strlen(text)-1;a>0;a--) { if(text[a] == '.') { text[a] = '\0'; break; } if(text[a] != '0') { text[a+1] = '\0'; break; } } printf("%s\n", text);
~code_pilot
-
Buggy Forum (s.o.) ???
-
Sowas ist mir auch schon in den Kopf gekommen, aber ich hätte das ganze halt gerne irgendwie über printf gelöst.
-
LOL hmmm aber so gates
-
Wenn schon Nullen abschneiden, dann habe ich mich mal etwas in Optimierung versucht.
int a; char text[100]; double calcNum = 1234567.8; calcNum += 1.1; a = sprintf(text, "%lf", calcNum)-1; for(;text[a]=='0';a--); if(text[a]=='.')text[a]='\0'; else text[a+1]='\0'; printf("%s\n", text);
sprintf liefert die Anzahl der geschriebenen Zeichen, also warum verfallen lassen nur um anschliessend strlen aufzurufen. Dann habe ich mir gedacht überlese doch einfach alle hinteren Nullen, und gucke nacher was das letzte Zeichen war. Das spart Vergleiche. Die Bedingung a>0 habe ich gleich ganz weggelassen, weil das liefert sowieso immer true.
Wenn du den ganzen Code nicht etliche hundert male ausführst wohl nicht gerade wichtig, aber man beachte die Uhrzeit, ich konnte einfach nicht pennen.
Gruß
Entyl Sa