C++ 小数点精度问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 15:23:03
我把程序简化了一下 就是这样的
#include <iostream>
#include <cmath>
using namespace std;
int main()
{

double temperature, dewpoint, humidex;

cin>>temperature>>dewpoint;

double e = 6.11 * exp (5417.7530 * ((1/273.16) - (1/(dewpoint+273.16))));
double h = (0.5555)* (e - 10.0);
humidex = temperature + h;

printf("T %.1f D %.1f H %.1f\n", temperature, dewpoint, humidex);

system("pause");
return 0;
}

这样写是对的 但是printf那行语句我改成
cout<<setprecision(1)<<"T "<<temperature<<" D "<<dewpoint<<" H "<<humidex<<endl;
前面加了头文件#include <iomanip>
但是这么写就不对
应该怎么写呢

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{

double temperature, dewpoint, humidex;

cin>>temperature>>dewpoint;

double e = 6.11 * exp (5417.7530 * ((1/273.16) - (1/(dewpoint+273.16))));
double h = (0.5555)* (e - 10.0);
humidex = temperature + h;

cout<<setiosflags(ios::fixed);//增加此句,fixed为固定小数位数显示
cout<<setprecision(1)<<"T "<<temperature<<" D "<<dewpoint<<" H "<<humidex<<endl;

system("pause");
return 0;
}

怎么个不对法,编译错误?

你试试setprecision(2)