23

浮動小数点をC++でフォーマットして、小数点以下2桁に切り上げて出力するにはどうすればよいですか?私は運がなくsetwsetprecision私のコンパイラがちょうど彼らがそうだと私に言うようにnot defined

cout << "Total : " << setw(2) << total << endl;

総出力:Total : 12.3961

私はそれが欲しいです:12.40または12.39それが切り上げるにはあまりにも多くの仕事であるならば。

4

7 に答える 7

19

<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 を使用するには、追加のヘッダー ファイルを含める必要がある場合があります。

于 2013-01-21T03:23:00.377 に答える
13

末尾のゼロも含めるには、精度を設定するだけでは不十分です。また、浮動小数点形式を固定形式に変更する必要があります。これは、小数点以下setprecisionの桁数としてによって示される桁数を使用します。

std::cout << std::fixed << std::setprecision(2) << v;

作業オンライン サンプル コード

于 2013-01-21T04:11:49.800 に答える
6

丸めから末尾のゼロが必要な場合は、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
}
于 2013-01-21T03:29:17.927 に答える