双倍乘法给出圆形结果

时间:2010-11-08 10:49:00

标签: c++ double multiplication

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

我期待结果为“999898.9892”,但获得“999899”。我需要实际的不受约束的结果。请建议。

3 个答案:

答案 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位数后的数字。