|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include "stdafx.h"
- #include "stdio.h"
- #include "math.h"
- void main()
- {
- float e=1,n=1,t=1,x;
- scanf("%lf",&x);
- do
- {
- t=t*x/n;
- e=e+t;
- n++;
- }while(t>=1e-5);
- printf("%lf\n",e);
- }
复制代码
怎么结果都是1.000000呀???
本帖最后由 行客 于 2019-2-11 17:02 编辑
这个问题出在scanf("%lf",&x);的"%lf"上。
%f是读入一个单精度浮点数,%lf是读入一个双精度浮点数。
你定义x的类型为float,所以读入方式应该为
scanf("%f",&x);
或者你把x的类型定义为double
修改代为具体如下:
- #include "stdafx.h"
- #include "stdio.h"
- #include "math.h"
- void main()
- {
- //float e=1,n=1,t=1,x;
- double e=1,n=1,t=1,x;
- scanf("%lf",&x);
- do
- {
- t=t*x/n;
- e=e+t;
- n++;
- }while(t>=1e-5);
- printf("%lf\n",e);
- }
复制代码
“%lf是默认六位小数的,如果你要保留几位小数,就要加%.nf保留n位小数”,这里指的是输出时的格式符:
printf("%lf\n",e);
可以改为
printf("%.3f");
表示输出小数位为3位
|
|