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>
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)