• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語について質問です。)

C言語初心者のための連続加算プログラムについての質問

このQ&Aのポイント
  • C言語初心者の方が、連続加算プログラムを作成する際に困っているようです。
  • 0.1ずつ加算していく計算方法も考えたが、小数点以下の桁数が多くなるため困惑しているようです。
  • 9までいったら自動的に加える数が1/10になるようにしたいが、具体的な方法について知りたいとのことです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

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); }

kittymimmy
質問者

お礼

magicalpassさんのおっしゃる通り、 浮動小数点演算による誤差をみることを目的として このプログラムを作っていました。 参考にさせていただきました。 ありがとうございました。

その他の回答 (3)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.4

誤差を考えると、0.1,0.01,0.001,・・・・・はテーブルにしたほうがいいかも。 0.1,0.01という数がそもそも誤差を含んでいることに注意。 プログラムがなにを目的とするかによって、このあたりの処理が変わってくるので、しっかり考えましょう。

kittymimmy
質問者

お礼

浮動小数による誤差を確かめることを目的として作っていたんです。 とても親切な返答をありがとうございました。

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.3

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);     }   } }

kittymimmy
質問者

お礼

参考にさせていただき、 無事完成させることができました。 ありがとうございました。

noname#119957
noname#119957
回答No.1

9までいったら自動的に加える数が1/10になるようにしたいのですが どうしたらいいのかわかりません。 >> 桁指定を、(1/x)としてxを10のゼロ乗から15乗までとして、計算桁を遷移させて 計算式をループできませんでしょうか?

kittymimmy
質問者

お礼

ループを使ってやってみました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう