鱼C论坛

 找回密码
 立即注册
查看: 1636|回复: 4

[已解决]c语言初学者求助

[复制链接]
发表于 2019-11-21 23:06:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想求pi的值为什么定义a必须是double型,换成int型就会输出4.000000,这是为啥?求助谢谢。
#include<stdio.h>
#include<math.h>
void main()

{
        int  s = 1;
        double a = 1.0, pi = 0, y;
        while(fabs(y)>=1e-6)
        {
                y  = s/a;
                pi = pi + y;
                s = -s;
                a = a+2;
        }
        pi = pi*4;
        printf("%10.6f\n",pi);
}
最佳答案
2019-11-21 23:13:51
因为s和a都是int的话,计算时s/a的结果也会是int
再把这个int值赋给y时丢失了精度,
你可以写成
y=(double)s/a;
这样a就能定义为int型

另外,你这里应该使用do..while循环而不是while循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-21 23:13:51 | 显示全部楼层    本楼为最佳答案   
因为s和a都是int的话,计算时s/a的结果也会是int
再把这个int值赋给y时丢失了精度,
你可以写成
y=(double)s/a;
这样a就能定义为int型

另外,你这里应该使用do..while循环而不是while循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-21 23:16:08 | 显示全部楼层
       你可真不知道尊重人啊,关于 pi 的问题不是已经帮你解决了吗?
       https://fishc.com.cn/forum.php?m ... 003&pid=4199135
       你到底还想怎样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2019-11-21 23:16:57 From FishC Mobile | 显示全部楼层
。。。。。。你看书了么?这就好比最简单的数学题,题目要求你回答一个整数你能写个2.5上去么?c语言乃至其它所有编程语言,你定义一个整型变量,里面就只能放整数,你把一个小数赋值给它,它也会抹掉小数部分强制转换成整数。存储什么类型数据就定义什么类型变量是最基础的常识。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-22 22:12:59 | 显示全部楼层
jackz007 发表于 2019-11-21 23:16
你可真不知道尊重人啊,关于 pi 的问题不是已经帮你解决了吗?
       https://fishc.com.cn/forum ...

我知道正确的做法,我自己复习从新打一遍打错成int发现的这个问题我不会,我以为s/a有一个double型输出的就是double型,并没有不尊重任何人,如果你不想回答,没有人强迫你,但也不用您费心留言来吐槽我谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 13:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表