double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;
結果が「999898.9892」になることを期待していましたが、「999899」になりました。実際の丸められていない結果が必要です。提案してください。
double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;
結果が「999898.9892」になることを期待していましたが、「999899」になりました。実際の丸められていない結果が必要です。提案してください。
デフォルトでは、iostreams は 6 桁の精度を出力します。さらに必要な場合は、次のように要求する必要があります。
std::cout.precision(15);
以下のように 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;
}
また、マニピュレータを使用するとコードがコンパクトになります。
デフォルトでは、std::iostream の精度は表示する合計桁数を示し、デフォルトの精度は 6 です。したがって、数値は小数点以下の桁数が 6 桁であるため、小数点以下は表示されません。
この動作は、「固定」マニピュレータで変更できます。'precision' は、小数点の後に表示する桁数を意味するように変更されます。これは、おそらく期待していたものです。
常に小数点以下 4 桁を取得するには、次のようにします。
cout << setprecision(4) << fixed << c;
ただし、小数点以下がゼロであっても常に 4 桁まで表示されることに注意してください。std::iostreams を使用して、小数点以下の最大x 桁を意味する「精度」を取得する簡単な方法はありません。