C++で浮動小数点数を小数点以下2桁に切り上げて出力するにはどうすればよいですか?私のコンパイラーは_not defined
_であると言っているので、setw
とsetprecision
には運がありません。
cout << "Total : " << setw(2) << total << endl;
合計出力:_Total : 12.3961
_
私はそれをしたい:_12.40
_またはそれを切り上げるのが多すぎる場合は_12.39
_。
<iomanip>
を含め、setw and setprecision
に名前空間スコープを提供する必要があります
#include <iomanip>
std::setw(2)
std::setprecision(5)
試してください:
cout.precision(5);
cout << "Total : " << setw(4) << floor(total*100)/100 << endl;
または
cout << "Total : " << setw(4) << ceil(total*10)/10 << endl;
iostreamは精度の高い機能を提供しますが、setwを使用するには、追加のヘッダーファイルを含める必要がある場合があります。
次のように_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);
を使用できます(科学表記を表示するには、fixedをscientificに置き換えます。両方とも数値を設定します小数点の右側の数字)。 cout.precision()は、フォーマットフラグにfixedまたはscientificが含まれていない場合、小数点の両側に合計で表示される桁数を設定するためにも使用されることに注意してください。 。これに関するチュートリアルがインターネット上にあります。
末尾のゼロも含めるには、精度を設定するだけでは不十分です。また、浮動小数点形式をfixed形式に変更する必要があります。これは、setprecision
で指定された桁数を桁数として使用します小数点の後:
std::cout << std::fixed << std::setprecision(2) << v;
丸めの末尾のゼロが必要な場合は、C関数printf
を使用できます。
#include <iostream>
#include <cstdio>
int main() {
float v = 12.3961;
std::printf("%.2f",v); //prints 12.40
}
に比べ:
#include <iostream>
#include <iomanip>
int main() {
float v = 12.3961;
std::cout << std::setprecision(4) << v; //prints 12.4
}