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。因此,由于您的数字在小数点前有六位数字,因此在小数点后不会显示任何数字。
您可以使用“固定”操纵器更改此行为。'precision' 然后更改为表示小数点后显示的位数,这可能是您所期望的。
要始终获得小数点后四位数,您可以这样做:
cout << setprecision(4) << fixed << c;
但是,请记住,这将始终显示小数点后的四位数字,即使它们是零。没有简单的方法可以使用 std::iostreams 获得“精度”以表示小数点后最多x 位数。