実現したいこと
C言語でマチンの公式を用いて円周率を求めたい
前提
ここに質問の内容を詳しく書いてください。
C言語で円周率を求めるプログラムを書いたのですがうまく求まりません
<stdio.h>のみで書きたいです
発生している問題・エラーメッセージ
求める値が9.696947などになってしまいます
エラーメッセージ
該当のソースコード
ソースコード **ボールドテキスト**#include<stdio.h> int main(void){ int n,i,k; double j=0,jou1=1,jou2=1,sum=0,sum1=0,sum2=0; printf("nを入力:"); scanf("%d",&n); for(i=0;i<=n;i++,j++){ if(i%2==0){ sum1=sum1+1.0/((2*j+1)*jou1); sum2=sum2+1.0/((2*j+1)*jou2); }else{ sum1=sum1-1.0/((2*j+1)*jou1); sum2=sum2-1.0/((2*j+1)*jou2); } for(k=1;k<=2*i+1;k++){ jou1=jou1*5.0; jou2=jou2*239.0; } jou1=1; jou2=1; } sum=16*sum1-4*sum2; printf("π=%lf",sum); return 0; } ### 試したこと float型にしたり演算の順番をかえたりwhile文にしたりしてみました ### 補足情報(FW/ツールのバージョンなど) vscodeのversionは1.77.3です ここにより詳細な情報を記載してください。
#include <stdio.h>
int main() {
double sign = 1.0;
int i;
double sum = 0.0;
for ( i = 0; i < 1000; ++i ) {
sum += sign / (i+i+1);
printf("%d : %f\n", i, sum*4);
sign *= -1.0;
}
return 0;
}
...収束遅ぇ
マチンの公式を眺めると、
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%81%E3%83%B3%E3%81%AE%E5%85%AC%E5%BC%8F
以下の部分は、
for(k=1;k<=2*i+1;k++){
jou1=jou1*5.0;
jou2=jou2*239.0;
}
jou1=1;
jou2=1;
以下の様になるでしょう。
double jou1=5.0,jou2=239.0,...
:
jou1 *= 5.0*5.0;
jou2 *= 239.0*239.0;
なお、変数 j と i は同一の値を保持しているので j は不要かと。
コードだけを「コードのマークダウン(```だけの行)」で囲み、コード以外は含まないようにしてください。

回答1件
あなたの回答
tips
プレビュー