c++怎么显示小数点后面的有效数字

for(int k=0;k<j;k++)
{
outfile<<fixed<<setprecision(8)<<taxidata[k].longitude<<" "<<taxidata[k].latitude<<" "<<taxidata[k].dis<<endl;
}

现在longitude\latitude\dis都是相同的后面的数字,但是dis后面就一串0,我试着把fixed去掉,给他们分别setprecision,结果出来的多行数据对不齐……请教怎么保持前两个的有效位不变,后面的那个没有那么多0……

有三种情况:C++默认输出的为有效数字
1.输出时最多保留3位有效数字
#include
#include //必须包含的头文件
using namespace std;
int main()
{
float fn = 3.101;
cout << setprecision(3) << setiosflags(ios::showpoint) << fn << endl;
//灰色部分,后面补充零,直到满足有效位数,当保留有效数字恰好到个位数为止,后面仍显示小数点
return 0;

}
结果:
3.10

2.输出时保留小数点后3位
#include
#include //必须包含的头文件
using namespace std;

int main()
{
float fn = 3.5004;
cout << setprecision(3) << setiosflags(ios::fixed | ios::showpoint) << fn << endl;
//灰色部分可以省去,效果相同。
return 0;
}

结果:
3.500

ps:
当头文件有 #include时,setiosflags(ios::XXX)可以直接写成XXX
比如:cout<<setiosflags(ios::fixed) 可直接写成 cout <<fixed

ps:对文件的操作方法也一样
如:
outfile << setprecision(11) << a[i];
outfile << setprecision(3) << setiosflags(ios::fixed | ios::showpoint) <<a[1];
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-09
我知道C语言是用printf("%g", f);来消除后面的0本回答被提问者采纳
第2个回答  2015-06-22
float a=3.1415926
sprintf("%.8f",a);//保留8位有效位,不够补0
第3个回答  2014-01-09
printf("%.2lf",a);
打印保留2位小数。
相似回答