新聞中心
C語言編程,用for循環(huán)完成。用格里高利公式計算并輸出圓周率的值。
#include?stdio.h
目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、韶山網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
#include?math.h
int?main()
{
double?sign?=?1.0;
double?sum?=?0.0;
int?n;
printf("請輸入循環(huán)次數(shù):n?=?");
scanf("%d",?n);
for(int?i=1;?in;?i=i+2)
{
sum?=?sum?+?sign?/?i;
sign?=?(?-1?)?*?sign;
}
sum?=?4?*?sum;
printf("pi?=?%f\n",sum);
return?0;
}
C語言調(diào)用函數(shù)funpi(e)使用格里高利公式求pi的近似值
函數(shù)里,i 沒有賦初值。
去掉 函數(shù)里的 scanf("%d",e);因為你從主函數(shù)輸入了。
int main(void){
double e,sum;
double funpi(double e);
scanf("%lf",e);
sum=funpi(e);
printf("pi=%.4f",sum*4);
return 0;}
double funpi(double e){
int fuhao=1,fenmu=1;
double i=3.0,sum=0; // i 初值3
//scanf("%d",e); //去掉輸入
while (fabs(i)=e) {
i=fuhao*1.00/fenmu;
sum=sum+i; fuhao=-fuhao; fenmu=fenmu+2;
}return sum;
}
輸入
0.0001
pi=3.1418
c語言用格里高利公式求pi問題
double能算幾位??
肯定不能求出來啊~~
關(guān)鍵是精度~~double大到(或小到)一定的時候就不能精確了~~
一般算無理數(shù)需要用數(shù)組模擬基礎(chǔ)運算~~分位或分組計算出答案~~
比如π,需要將公式轉(zhuǎn)換成連乘的形式,用數(shù)組記錄下各位各組計算產(chǎn)生的進位,再對下一位進行計算~~
e,需要將公式轉(zhuǎn)換成連除的形式,用數(shù)組記錄下各各組位計算產(chǎn)生的余數(shù)~~
公式推導(dǎo)和精度的確定需要用到泰勒公式和泰勒公式余項的計算。
讓你見識一下世界上最強的π的計算程序!
///////////////////////////////////////////////////
#include stdio.h
long a=10000,b,c=2800,d,e,f[2801],g;
void main()
{
for(;b-c;) f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
////////////////////////////////////////////////////
三行代碼算幾千位~~
當前題目:c語言函數(shù)格里高利公式,格里高利公式原理
文章出自:http://fisionsoft.com.cn/article/hdcsod.html