c语言初学者求助
想求pi的值为什么定义a必须是double型,换成int型就会输出4.000000,这是为啥?求助谢谢。#include<stdio.h>
#include<math.h>
void main()
{
ints = 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);
} 因为s和a都是int的话,计算时s/a的结果也会是int
再把这个int值赋给y时丢失了精度,
你可以写成y=(double)s/a;
这样a就能定义为int型
另外,你这里应该使用do..while循环而不是while循环 你可真不知道尊重人啊,关于 pi 的问题不是已经帮你解决了吗?
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=151003&pid=4199135
你到底还想怎样? 。。。。。。你看书了么?这就好比最简单的数学题,题目要求你回答一个整数你能写个2.5上去么?c语言乃至其它所有编程语言,你定义一个整型变量,里面就只能放整数,你把一个小数赋值给它,它也会抹掉小数部分强制转换成整数。存储什么类型数据就定义什么类型变量是最基础的常识。 jackz007 发表于 2019-11-21 23:16
你可真不知道尊重人啊,关于 pi 的问题不是已经帮你解决了吗?
https://fishc.com.cn/forum ...
我知道正确的做法,我自己复习从新打一遍打错成int发现的这个问题我不会,我以为s/a有一个double型输出的就是double型,并没有不尊重任何人,如果你不想回答,没有人强迫你,但也不用您费心留言来吐槽我谢谢。
页:
[1]