主题:怎样控制不同的输出格式(小数点后0的个数)
liuliu0207 [专家分:0] 发布于 2010-03-03 11:09:00
我的计算结果可能有以下两种结果:
1、小数点后只保留一位小数(不是0),如1.5,22.8,30.1等等。
2、小数点后要保留两位小数,即0.01。
如果我都保留小数后两位小数的后,那么情况1会出现1.50,22.80,30.10等等。
怎样才能让输出的格式不一致(有的要保留一位,有的要保留两位),即要求小数点后最后一位不是0?
谢谢!
回复列表 (共9个回复)
沙发
liuliu0207 [专家分:0] 发布于 2010-03-03 11:16:00
请各位帮帮忙。
板凳
yeg001 [专家分:14390] 发布于 2010-03-03 19:13:00
写个代码判断一下每个输出的数属于那种情况, 然后相应格式输出.
谢谢
3 楼
liuliu0207 [专家分:0] 发布于 2010-03-03 21:02:00
谢谢。
但是我要输出的有好5个数字。如果每个数字都要这样判断的话,那就有2的5次方,一共有32种情况了。那太复杂。而且如果数字再多一点的话,就更麻烦了。
不知道有没有什么办法直接在输出中判断?
还是要谢谢你。
4 楼
耶路撒冷 [专家分:650] 发布于 2010-03-03 21:50:00
调用iomanip库里的设置精度的函数setprecision(int n),n为你要控制的精度数
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{
float a=0.123456;
float b=1.234567;
cout<<setprecision(3)<<a<<endl;// output 0.123
cout<<setprecision(3)<<b<<endl;// output 1.12
//setprecision(n)跟在其后面的对象起作用,设置他们的精度,详情请自己参考iomanip库的函数说明
}
5 楼
liuliu0207 [专家分:0] 发布于 2010-03-03 22:30:00
非常谢谢。可是我要输出的是五个数字放在一行中输出啊。
如:
write(*,f5.2,f5.2,f5.2,f5.2,f5.2)a,b,c,d,e
怎么办呢?
6 楼
耶路撒冷 [专家分:650] 发布于 2010-03-04 11:44:00
不加endl输出的结果不就都在同一行了吗
float a=1.12345f,b=2.3456f,c=3.4567f,d=4.5678f;
cout<<setprecision(3)<<a<<" "<<setprecision(2)<<b<<" "<<setprecision(4)<<c<<" "<<setprecision(5)<<d<<endl;
//-------------------输出为-----------------------
1.12 2.3 3.456 4.5678
setprecision(n)会一直对它后面的对象起作用,如果你不想设置精度了,想让后面的数据按原来的格式输出,那么你添加一句cout<<setprecision(0);即可
7 楼
liuliu0207 [专家分:0] 发布于 2010-03-05 21:04:00
谢谢!
我用的是fortran编程语言,和你的好像不同啊。
你用的是C++,对吗?
再次谢谢!
8 楼
yunhaizhijia [专家分:0] 发布于 2010-03-07 20:07:00
2345网址导航
[b]电脑小知识 [/b] 2345网址大全 2345小游戏 2345酷站导航
http://www.ai2345.cn/ 开机2345--电脑初学者 电脑知识 病毒安全 故障修复
电脑基本操作知识 帮助解决上网遇到的问题
9 楼
lxde0866 [专家分:480] 发布于 2010-03-08 18:02:00
自己编写个写程序,先把数字写到一个字符串中,然后对字符串进行判断空格和尾零判断,
最后用trim()函数写字符串,就可以了。
我来回复