- ベストアンサー
C言語初心者のための連続加算プログラムについての質問
- C言語初心者の方が、連続加算プログラムを作成する際に困っているようです。
- 0.1ずつ加算していく計算方法も考えたが、小数点以下の桁数が多くなるため困惑しているようです。
- 9までいったら自動的に加える数が1/10になるようにしたいが、具体的な方法について知りたいとのことです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
floatでいいのかどうかはさておき(浮動小数点演算による誤差を見るのが目的だろうから) int main() { float a = 0.0; float add = 1.0; int i, j; for (i = 0; i < 16; i++) { for (j = 0; j < 9; j++) { a += add; } add /= 10.0; } printf("%.15f\n", a); }
その他の回答 (3)
- titokani
- ベストアンサー率19% (341/1726)
誤差を考えると、0.1,0.01,0.001,・・・・・はテーブルにしたほうがいいかも。 0.1,0.01という数がそもそも誤差を含んでいることに注意。 プログラムがなにを目的とするかによって、このあたりの処理が変わってくるので、しっかり考えましょう。
お礼
浮動小数による誤差を確かめることを目的として作っていたんです。 とても親切な返答をありがとうございました。
- mindatg
- ベストアンサー率48% (110/227)
No2のと大して違いませんが /*全角スペース使って整えてます*/ #include <math.h> main() { double dblPrint = 0; int n = 0; // 本来はdouble int a; /* n乗ループ */ for ( n = 0; n > -16; n-- ) { for ( a = 1; a < 9; a++ ) { /* 10のn乗を足す */ dblPrint += pow(10,n); printf("%15f\n",dblPrint); } } }
お礼
参考にさせていただき、 無事完成させることができました。 ありがとうございました。
9までいったら自動的に加える数が1/10になるようにしたいのですが どうしたらいいのかわかりません。 >> 桁指定を、(1/x)としてxを10のゼロ乗から15乗までとして、計算桁を遷移させて 計算式をループできませんでしょうか?
お礼
ループを使ってやってみました。 ありがとうございました。
お礼
magicalpassさんのおっしゃる通り、 浮動小数点演算による誤差をみることを目的として このプログラムを作っていました。 参考にさせていただきました。 ありがとうございました。