teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

訂正

2016/07/31 07:29

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -22,3 +22,11 @@
22
22
  return 0;
23
23
  }
24
24
  ```
25
+ ###訂正
26
+ ```C
27
+ printf("%.9lf\n",pi*4);
28
+ ```
29
+ 上記でなく下記が正しいそうです。
30
+ ```C
31
+ printf("%.9f\n",pi*4);
32
+ ```

1

追記

2016/07/31 07:29

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -1,1 +1,24 @@
1
- これ本当に動きます?
1
+ これ本当に動きます?
2
+ ###追記
3
+ これで 9 桁まで出ます。
4
+ pi を初期化し、i を long にして while を for に変え、printf の書式を変えました。
5
+
6
+ 精度はもう少し高くできますが、いずれにしろ double の限界が来るので、精度が重要であればアルゴリズムを根本的に見直す必要があると思います。
7
+ π を求めるアルゴリズムはググればいくらでも出てくると思いますので、探してみてください。
8
+ ```C
9
+ #include <stdio.h>
10
+ #include <limits.h>
11
+
12
+ int main(void)
13
+ {
14
+ double pi=0, a=1;
15
+ for (long i = 0; i < LONG_MAX; i++) {
16
+ pi += 1/a;
17
+ a += 2;
18
+ pi -= 1/a;
19
+ a += 2;
20
+ }
21
+ printf("%.9lf\n",pi*4);
22
+ return 0;
23
+ }
24
+ ```