Wie erstelle ich eine Zeichenkette, so dass sie Gleitkommazahlen so formatiert, dass sie keine Nachkommastellen oder Ziffern haben, wenn sie eine ganze Zahl ist, aber NICHT für größere Zahlen in wissenschaftliche Notation umschaltet?Zeichenkettenformat mit% g in C
Wenn ich tun:
float myFloat= 15.6f;
float myInt = 5.0f;
float myLarge = 7000000.0f;
sprintf(out, "my float is %g", myFloat);
sprintf(out, "my int is %g", myInt);
sprintf(out, "my large is %g", myLarge);
ich so etwas wie:
my float is 15.6 my int is 5 my large is 7e+07f
ich alle einzelnen Format-String möchten, die 15,6, 5 geben wird, und 700000.
Edited Ursache Kommentare machen keine Formatierung:
das ist was ich dachte. aber ein Wrapper ist ziemlich unbequem obwohl, wie die Format-Strings in mehr Format-Strings eingebettet sind:
sprintf(buf, "%d %g", myInt, myFloat);
wie, dass Sie wickeln?
sprintf(buf, "%d %g", myInt, Wrapper(myFloat));??
was sollte Wrapper zurück? Oder schlechter:
sprintf(buf, "%d %s", myInt, Wrapper(myFloat));??
Wenn Sie% verwenden.* f, dann müssen Sie nur tun: sprintf (buf, "% d%. * f", myint, getPlaces (myFloat), myFloat); Kein Wrapper zum Generieren von Formatzeichenfolgen erforderlich. –