所以这里有一个程序可以计算pi值的近似值,如果你把足够的项加入到以下程序中数学描述的总和并计算根的表达式,你会得到一个越来越接近的值对于pi的值,您拥有的条款越多.
#include <stdio.h>
#include <math.h>
main()
{
int j, terms;
double sum, precision, pi;
printf("How many terms: "); scanf("%d", &terms);
for(j=1;j<=terms;j++)
sum+=1/(j*j);
pi = sqrt(6*sum);
printf("Pi: %lf.\n", pi);
}
Run Code Online (Sandbox Code Playgroud)
但是这里有一些东西会让它出错,我无法弄清楚是什么.
sum+=1/(j*j);
Run Code Online (Sandbox Code Playgroud)
我认为错误可能就在那条线上,因为所有其他人看起来都很好,一开始想也许计算机不计算十进制数.我不确定.但我的问题是:这段代码是什么让它出现故障?以及如何我修好了吗?
这将执行整数除法:
1/(j*j);
Run Code Online (Sandbox Code Playgroud)
试试这个:
sum+=1.0/(j*j);
Run Code Online (Sandbox Code Playgroud)
如果j*j可能溢出,请执行此操作
sum+=1.0/((double)j*j);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |