8

以下を使用して、値を小数点以下2桁に丸めました。

 x = floor(num*100+0.5)/100;

これはうまくいくようです。「16.6」である「16.60」のような値を除いて。

この値を「16.60」のように出力したい。

値を出力する方法は次のとおりです。

cout setw(12) << round(payment);

私は次のことを試しました:

cout setw(12) << setprecision(2) << round(payment);

しかし、それは私に次のような答えを与えました

1.2e+02

どうすれば正しく値を出力できますか?

4

3 に答える 3

20

これはstd::setprecision、小数点以下の桁数を設定せず、小数点以下の固定桁数を使用するように浮動小数点形式を変更しない場合は有効桁数を設定するためです。形式を変更するには、 std::fixedを出力ストリームに入れる必要があります。

double a = 16.6;
std::cout << std::fixed << std::setprecision(2) << a << std::endl;
于 2013-01-30T03:37:19.497 に答える
11

printf/sprintfまたは他の同様の関数を使用できます。次のコードは、浮動小数点値を小数点以下2桁にフォーマットします。フォーマット情報の詳細については、printfのマニュアルを参照してください

float f = 1.234567
printf("%.2f\n", f);
于 2013-01-30T03:36:36.757 に答える
3

Trevor Boyd Smithのコメントから:

printfや友人にアレルギーがある場合は、次のように使用できるタイプセーフなC++バージョンが#include <boost/format.hpp>あります。

float f = 1.234567;
cout << boost::format("%.2f") % f << endl;
于 2015-04-26T03:02:18.603 に答える