- ベストアンサー
実行結果を倍精度浮動小数点数(double)で表示させたいです
C言語の勉強をしている大学生です。 プログラミングをしている中で、質問が3つほど出てきました。 互いに関連しているのでまとめて質問させてください。 無限等比級数を計算するプログラムを作成しました。 これをコンパイルして実行すると、double型で定義しているのに 小数点以下7桁となってしまいます。 doubleは15桁ということなので、15桁で出力したいのです。 これが1つめの質問です。 <実行結果> input n:10 1.500000 1.750000 1.875000 1.937500 1.968750 1.984375 1.992188 1.996094 1.998047 pow関数がmath.hに含まれているのかも定かではなく、 インターネットでmath.hというものがあると書いてあったので、 インクルードしてみましたが、これは適切でしょうか? これが2つめの質問です。 最後になりますが、インターネットで多倍長ライブラリというものが あるということを知りましたが、この使用方法がわかれば具体的な例を 挙げながら教えていただきたいと思います。 ------------------------------------------------------------ #include <stdio.h> #include <math.h> int main(void) { int n; int i; double total; printf("input n:"); scanf("%d",&n); if (n<1){ printf("unable\n"); return 0; } for(i=1; i<n; i++){ total += 1.0 / pow(2.0,i); printf("%f\n",total+1.0); } } ------------------------------------------------------------
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
はじめ2つだけ. 1)printf関数は桁数等を制御する記法が存在します. %fの部分をたとえば%1.15fとかくと,精度が15桁となります. 2)計算結果を見れば.合っていることがわかるのでは?
その他の回答 (1)
- rinkun
- ベストアンサー率44% (706/1571)
1. > printf("%f\n",total+1.0); の部分を < printf("%.15f\n",total+1.0); とすれば良いでしょう。 2. 標準的な環境ではpow関数はmath.hで宣言されています。 3. 多倍長ライブラリはそのライブラリのマニュアルを参照しましょう。 標準仕様はないので、少なくとも具体的なライブラリの指定がなければ使い方を説明することは不可能です。
お礼
解決しました。ありがとうございます。 他にも二項分布などのちょっとしたプログラムを作っていて、 数学の勉強のためにもっと精度の高い結果が欲しいと思っていましたが、 15を30にしたら桁数が増えたので、多倍長ライブラリを使わなくても十分でした。 余力があれば、多倍長ライブラリも使ってみます。
補足
お返事ありがとうございます。 フォーマット指定子というものがあったとは。 僕の持っている初心者向けの本には載ってませんでした。 解決しました。