帮帮忙!c语言计算pi ,为什么结果是4??
发布网友
发布时间:2022-05-12 20:42
我来回答
共5个回答
热心网友
时间:2023-10-22 00:29
i,j不应该用int型,应该用float型,如果用int型的话,j/i是整形把它赋给m是float型,是不对的m=0,这样p只会等于m等于1(while里面第一步还是执行了),pi就是4了,精度会有损失.可以改成如下:
#include <stdio.h>
#include<math.h>
void main()
{
float p=0,pi,m=1,i=1,j=1;
while(fabs(m)>1e-6)
{
p=p+m;
i=i+2;
j=-j;
m=j/i;
}
pi=p*4;
printf("%f\n",pi);
}
就可以了,楼主试试?
热心网友
时间:2023-10-22 00:30
#include<math.h>
int main()
{
int i=1;
float j=1;
float p=0,pi,m=1;
while (fabs(m)>=1e-6)
{
p=p+m;
i=i+2;
j=-j;
m=j/i;
}
pi=p*4;
printf("pi=%f\n",pi);
return 0;
}
运行结果是3.141594,
【把j或i中的一个换成float型的,因为"整型/整型"的运算结果还是整型的不会产生浮点数。】
热心网友
时间:2023-10-22 00:30
问题出在m=j/i这一步,这一步会把整型结果赋值给浮点型,造成数据丢失。
改成这样就可以了m=(float)j/i
热心网友
时间:2023-10-22 00:31
m = j / i; 问题在这了,改成 m = 1.0 * j/i
热心网友
时间:2023-10-22 00:32
一般定义3.14时用pi。你这个没有赋初值