4
double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;

結果が「999898.9892」になることを期待していましたが、「999899」になりました。実際の丸められていない結果が必要です。提案してください。

4

3 に答える 3

13

デフォルトでは、iostreams は 6 桁の精度を出力します。さらに必要な場合は、次のように要求する必要があります。

std::cout.precision(15);
于 2010-11-08T10:55:14.417 に答える
1

以下のように Manipulator setprecision を使用して行うこともできます。

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
 double a = 2451550;
 double b = .407864;
 double c= a*b;
 cout<<setprecision(15)<<c;
}

また、マニピュレータを使用するとコードがコンパクトになります。

于 2010-11-08T11:08:14.243 に答える
0

デフォルトでは、std::iostream の精度は表示する合計桁数を示し、デフォルトの精度は 6 です。したがって、数値は小数点以下の桁数が 6 桁あるため、小数点以下は表示されません。

この動作は、「固定」マニピュレータで変更できます。'precision' は、小数点のに表示する桁数を意味するように変更されます。これは、おそらく期待していたものです。

常に小数点以下 4 桁を取得するには、次のようにします。

cout << setprecision(4) << fixed << c;

ただし、小数点以下がゼロであっても常に 4 桁まで表示されることに注意してください。std::iostreams を使用して、小数点以下の最大x 桁を意味する「精度」を取得する簡単な方法はありません。

于 2011-01-03T08:53:06.587 に答える