• ベストアンサー

大きな桁の計算はどうやるの?

double型で計算しきれない桁数のの計算はどうすればいいのでしょうか。 4桁の問題を80問やったときにまぐれで全問正解する確率を計算したいのですが int i; double x=4; for(i=1;i<80;i++){ x = x * 4; } printf(" %f 分の1 \n",x); これでは結果が e と出てしまって計算できません。 どなたか教えてください><

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

  • ベストアンサー
  • ballville
  • ベストアンサー率47% (233/487)
回答No.1

long double型というのがありますが、doubleと同じ精度という処理系も多いのでここでは割愛。 こういう場合は多倍長演算を行います。私たちが使う十進数は、'0'から'9'まで10個の数字を使いますが、例えば1バイト分を0x00から0xFFまで、255個の「数字」であると考え、筆算と同じ様に繰り上がりを計算します。 いちいち、そのための演算ルーチンを考えるのは大変なので、世の中には多くの多倍長演算ライブラリが出回っています。自分の処理系に合ったものを探してください。 http://www.google.co.jp/search?num=30&hl=ja&q=%E5%A4%9A%E5%80%8D%E9%95%B7++%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

dra2jp
質問者

お礼

なるほど!わかりました!丁寧にありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

4^80=1461501637330902918203684832716283019655932542976

dra2jp
質問者

お礼

そんなに大きな数字になるのですね。計算結果利用させていただきました。ありがとうございました。

noname#16765
noname#16765
回答No.2

doubleより大きい型ならlong doubleがあったと思うけど?

dra2jp
質問者

お礼

次からlongでやってみようとおもいます。ありがとうございました!

関連するQ&A