0

私はこのコードを持っています:

double a = 7.456789;
cout.unsetf(ios::floatfield);
cout.precision(5);
cout << a;

そしてこれも:

double a = 798456.6;
cout.unsetf(ios::floatfield);
cout.precision(5);
cout << a;

最初のコードの結果は次のとおりです: 7.4568 これはほとんど私が望むものです (私が受け取りたいのは 7.4567 です) 2 番目の結果: 7.9846e+05 これは私が望むものとはまったく異なります (私は 798456.6 が欲しいです) したいです小数点以下4桁まで数値を出力する

どうやってやるの ?

4

1 に答える 1

4

By using unsetf(), you are telling cout to use its default formatting for floating-point values. Since you want an exact number of digits after the decimal, you should be using setf(fixed) or std::fixed instead, eg:

double a = ...;
std::cout.setf(std::fixed, ios::floatfield);
std::cout.precision(5);
std::cout << a;

.

double a = ...;
std::cout.precision(5);
std::cout << std::fixed << a;
于 2013-01-01T08:28:26.247 に答える