は一度-0.00
を返すように言って、この小さな機能C/C++のsprintfの書式-0
string format_dollars_for_screen(float d)
{
char ch[50];
sprintf(ch,"%1.2f",d);
return ch;
}
がありました。
私は
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;
}
にそれを変更し、それは、必要に応じて0.00
を返し始めました。私の質問は、なぜこの他のソリューションは動作しないのですか?
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;
}
そして/またはこれを行うより効率的な方法がありますか?これは私の頭の上からちょうど離れているので、批評は大歓迎です。 =)
をあなたは 'sprintf'と固定長文字バッファを(む〜!)これは離れてちょうどCコードで使用している考えますあなたが 'string'を返すという事実からです。 – tadman
@tadman:文字列を返しますが、C++ではまだ標準的なフォーマットソリューションがありません。 – ybungalobill
@ybungalobill "良い"のあなたの定義に依存します。それは[これは未解決の問題です](http://stackoverflow.com/questions/29200635/convert-float-to-string-with-set-precision-number-of-decimal-digits)のようなものではありません。 – tadman