double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;
我期待结果为“999898.9892”,但获得“999899”。我需要实际的不受约束的结果。请建议。
答案 0 :(得分:13)
默认情况下,iostreams输出6位精度。如果你想要更多,你必须要求它:
std::cout.precision(15);
答案 1 :(得分: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;
}
另外,使用操纵器会使代码紧凑。
答案 2 :(得分:0)
默认情况下,std :: iostream的精度将显示要显示的 total 的位数,默认情况下,精度为6.因此,因为您的数字在之前有六位数 >小数点后不会显示任何小数位。
您可以使用“固定”操纵器更改此行为。 'precision'然后更改为表示在小数后显示的位数,这可能是您所期望的。
要始终获得小数点后的四位数,您可以执行此操作:
cout << setprecision(4) << fixed << c;
但是,请记住,即使它们为零,它也会始终显示小数点后的四位数。没有简单的方法可以使用std :: iostreams将'精确'表示最多 x位数后的数字。