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。因此,由于您的数字在小数点有六位数字,因此在小数点后不会显示任何数字。

您可以使用“固定”操纵器更改此行为。'precision' 然后更改为表示小数点显示的位数,这可能是您所期望的。

要始终获得小数点后四位数,您可以这样做:

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

但是,请记住,这将始终显示小数点后的四位数字,即使它们是零。没有简单的方法可以使用 std::iostreams 获得“精度”以表示小数点后最多x 位数。

于 2011-01-03T08:53:06.587 回答