gpt4 book ai didi

c - 执行for循环后获取总和为Nan

转载 作者:太空狗 更新时间:2023-10-29 16:11:07 24 4
gpt4 key购买 nike

我正在使用级数展开来将 sin 的值逼近到有限数。的for循环迭代。我已经使用 j 循环来计算 2i+1 的阶乘值。如果我在某个地方犯了错误,请帮助。

#include <stdio.h>
#include <math.h>

int main(void) {
printf("Enter the value of angle:" );
double ag, rad, sum = 0;
scanf("%lf", &ag);
rad = 3.14159 * ag / 180.0;
int i, j, frac = 1;
for (i = 0; i <= 100; i++) {
for (j = 1; j <= 2*i+1; j++)
frac *= j;
if (i % 2 == 0)
sum += pow(rad, 2*i+1) / frac;
else
sum += (-pow(rad, 2*i+1) / frac);
}
printf("Required sum=%f", sum);
return (0);
}

最佳答案

Nan 的原因是在某个时候,由于整数溢出,frac 在循环中变为 0。将 sum 除以 0 得到 Nan

刚刚测试了你的程序

# include<stdio.h>
# include<math.h>

int main(void)
{
printf("Enter the value of angle:" );
double ag,rad,sum=0;
scanf("%lf",&ag);
rad=3.14159*ag/180.0;
printf("%f\n", rad);
int i,j,frac=1;
for(i=0;i<=100;i++)
{
for(j=1;j<=2*i+1;j++)
frac*=j;
if(i%2==0)
{
sum+=pow(rad,2*i+1)/frac;
printf("if: %f, %d\n", sum, frac);
}
else
{
sum+=(-pow(rad,2*i+1)/frac);
printf("else: %f, %d\n", sum, frac);
}
}
printf("Required sum=%f\n",sum);
return(0);
}

输出:

Enter the value of angle:30
0.523598
if: 0.523598, 1
else: 0.499674, 6
if: 0.499728, 720
else: 0.499728, 3628800
if: 0.499728, -1736015872
else: 0.499728, -2004877312
if: inf, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
else: nan, 0
if: nan, 0
Required sum=nan

关于c - 执行for循环后获取总和为Nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com