Es war einmal diese kleine FunktionC/C++ sprintf Formatierung -0
string format_dollars_for_screen(float d)
{
char ch[50];
sprintf(ch,"%1.2f",d);
return ch;
}
die -0.00
zurückkehren gern.
I modifiziert es
string format_dollars_for_screen(float d)
{
char ch[50];
float value;
sprintf(ch,"%1.2f",d);
value = stof(ch);
if(value==0.0f) sprintf(ch,"0.00");
return ch;
}
Und es begann 0.00
nach Wunsch zurück. Meine Frage ist, warum funktioniert diese andere Lösung nicht?
string format_dollars_for_screen(float d)
{
char ch[50];
float value;
sprintf(ch,"%1.2f",d);
value = stof(ch);
if(value==0.0f) sprintf(ch,"%1.2f", value);
return ch;
}
Und/oder gibt es eine effizientere Möglichkeit, dies zu tun? Das ist nur von der Spitze meines Kopfes, also sind Kritiken willkommen. =)
Betrachtet man Sie mit 'sprintf' und fester Länge Zeichenpuffer (igitt!) das ist nur C-Code auseinander von der Tatsache, dass Sie 'string' zurückgeben. – tadman
@tadman: Sie geben eine Zeichenfolge zurück, und in C++ haben Sie immer noch keine gute Standardformatierungslösung. – ybungalobill
@ybungalobill Hängt von Ihrer Definition von "gut" ab. Es ist nicht wie [dies ist ein ungelöstes Problem] (http://stackoverflow.com/questions/29200635/convert-float-to-string-with-set-precision-number-of-decimal-digits). – tadman