C++精度控制?

yun77op 2009-05-28 01:40:46
#include <iostream>
#include <iomanip>
using namespace std;
double cou(int n){
int i,j;
double z=0.0,temp;
if(n==0) return 1;
for(i=n;i>0;i--){
temp=1.0;
j=i;
while(j!=0){
temp *=1.0/j;
j--;
}

z +=temp;
}
z+=1;
return z;
}
int main()
{
double z;
cout<<"n e"<<endl;
cout<<"- -----------"<<endl;
for(int i=0;i<=9;++i){
z=cou(i);
cout<<i<<' '<<setw(11)<<setprecision(9)<<setiosflags(ios::left)<<z<<endl;
}
return 0;
}


程序是简单的,cou函数不用管,主要是输出那段,我设置精度是9,但它不是从小数点后算起的,但我记得应该是从小数点后算起的呀?
如果设置精度10,输出的一个数会舍掉零位,但我希望保留;用showpoint的话,前面的没余位的数也会加上零;有点烦,help!
结果应该是这样的
n e
- -----------
0 1
1 2
2 2.5
3 2.666666667
4 2.708333333
5 2.716666667
6 2.718055556
7 2.718253968
8 2.718278770
9 2.718281526
...全文
506 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyan2009 2009-05-28
  • 打赏
  • 举报
回复
ls正解
thesecretblue 2009-05-28
  • 打赏
  • 举报
回复
[Quote]{发表于:2009-05-28 14:21:101楼 得分:0
cout < <i < <' ' < <setw(11) < <setprecision(9) < <setiosflags(ios::fixed) < <z < <endl;
}[/Quote]
goodname 2009-05-28
  • 打赏
  • 举报
回复
cout<<i<<' '<<setw(11)<<setprecision(9)<<setiosflags(ios::fixed)<<z<<endl;

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧