回 帖 发 新 帖 刷新版面

主题:怎样控制不同的输出格式(小数点后0的个数)

我的计算结果可能有以下两种结果:
1、小数点后只保留一位小数(不是0),如1.5,22.8,30.1等等。
2、小数点后要保留两位小数,即0.01。

如果我都保留小数后两位小数的后,那么情况1会出现1.50,22.80,30.10等等。

怎样才能让输出的格式不一致(有的要保留一位,有的要保留两位),即要求小数点后最后一位不是0?

谢谢!

回复列表 (共9个回复)

沙发

请各位帮帮忙。

板凳

写个代码判断一下每个输出的数属于那种情况, 然后相应格式输出.

谢谢

3 楼


谢谢。

但是我要输出的有好5个数字。如果每个数字都要这样判断的话,那就有2的5次方,一共有32种情况了。那太复杂。而且如果数字再多一点的话,就更麻烦了。

不知道有没有什么办法直接在输出中判断?

还是要谢谢你。

4 楼

调用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 楼


非常谢谢。可是我要输出的是五个数字放在一行中输出啊。

如:

write(*,f5.2,f5.2,f5.2,f5.2,f5.2)a,b,c,d,e

怎么办呢?

6 楼

不加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 楼

谢谢!

我用的是fortran编程语言,和你的好像不同啊。

你用的是C++,对吗?

再次谢谢!

8 楼

2345网址导航

[b]电脑小知识  [/b] 2345网址大全 2345小游戏   2345酷站导航


http://www.ai2345.cn/   开机2345--电脑初学者  电脑知识  病毒安全  故障修复
  电脑基本操作知识  帮助解决上网遇到的问题

9 楼

自己编写个写程序,先把数字写到一个字符串中,然后对字符串进行判断空格和尾零判断,
最后用trim()函数写字符串,就可以了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册