C++ で float をフォーマットして、小数点以下 2 桁を切り上げて出力するにはどうすればよいですか?コンパイラは であるとだけ表示するためsetw
、 とではうまくいきません。setprecision
not defined
cout << "Total : " << setw(2) << total << endl;
総出力:Total : 12.3961
そうであってほしいです。12.40
または、12.39
切り上げるのが面倒すぎる場合。
ベストアンサー1
cout << fixed
または およびcout.setf(ios::fixed)
をstd::cout.precision(<# of decimal digits>)
次のように使用します(OSX Mavericks に含まれている Clang-503.0.40 コンパイラを使用)。
#include <iostream>
int main()
{
using namespace std;
float loge = 2.718;
double fake = 1234567.818;
cout << fixed;
cout.precision(2);
cout << "loge(2) = " << loge << endl;
cout << "fake(2) = " << fake << endl;
cout.precision(3);
cout << "loge(3) = " << loge << endl;
cout << "fake(3) = " << fake << endl;
}
出力は次のようになります (丸めに注意してください)。
loge(2) = 2.72
fake(2) = 1234567.82
loge(3) = 2.718
fake(3) = 1234567.818
これは単純なバージョンです。 を使用する代わりに、 (科学的記数法を表示するには、 を に置き換えます)cout << fixed;
を使用できます。cout.setf(ios::fixed);
修理済みと科学的; どちらも小数点の右側の桁数を設定します。フォーマットフラグに含まれていない場合、cout.precision() は小数点の両側に表示される合計桁数を設定するためにも使用されます。修理済みまたは科学的これに関するチュートリアルはインターネット上に存在します。