【发布时间】:2010-11-08 10:48:59
【问题描述】:
double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;
我期望结果是“999898.9892”,但得到的是“999899”。我需要实际的未舍入结果。请提出建议。
【问题讨论】:
-
会假设它是某种圆形的山雀
标签: c++ double multiplication
double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;
我期望结果是“999898.9892”,但得到的是“999899”。我需要实际的未舍入结果。请提出建议。
【问题讨论】:
标签: c++ double multiplication
默认情况下,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 的精度将显示 total 要显示的位数,默认精度为 6。因此,由于您的数字 之前 有六位数> 小数点后不会显示任何小数位。
您可以使用“固定”操纵器更改此行为。 'precision' 然后更改为表示要在小数点后显示的位数,这可能是您所期望的。
要始终获得小数点后四位数,您可以这样做:
cout << setprecision(4) << fixed << c;
但是,请记住,这将始终显示小数点后的四位数字,即使它们是零。没有简单的方法来获得“精度”以表示 最多 x 使用 std::iostreams 小数点后的位数。
【讨论】: