c++如何将float保留两位有效数字

学校ACM里出现要求结果保留两位有效数字

#include<stdio.h>#include<iostream>
#include<iomanip>
using namespace std;void main()
{
float result=2.355; printf("%.2f\n",result); //C语言的表达方式,.n表示保留n位小数,并且四舍五入
cout<<setprecision(2)<<result<<endl; //C++的表达方式
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-02

有三种方式,分别在下面例程中表示出来。

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
 float a=12.9999,  b=0.2234;
 //第一种方式,从根本改变输出流
 cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<endl;
 cout<<setiosflags(ios::fixed)<<setprecision(2)<<b<<endl;
 //第二种方式,简缩型
 cout<<endl;
 cout<<setprecision(2)<<fixed<<a<<endl;
 cout<<setprecision(2)<<fixed<<b<<endl;
 //第三种方式,全局整体型
 cout<<endl;
 cout.precision(2);
 cout<<a<<endl;
 cout<<b<<endl;
 return 0;
}

第2个回答  2013-03-28
保留应该没有办法,就算只有两位有效数字,小数点之后还是会自动补0的,倒是可以输出时保留两位有效数字。
第3个回答  2013-03-29
使用setprecision函数,可以参照下面程序,在VC6.0下写的#include<iostream>
#include<iomanip>
using namespace std;void main()
{
float x=2.355;
cout<<setprecision(2)<<x<<endl;
}
第4个回答  2013-03-28
float data = 0.31;
cout.setf(ios::fixed);
cout.precision(2);
cout<<data<<endl;本回答被网友采纳
相似回答