• ベストアンサー

少数の計算

ASP VBScript 割るとオーバーフローを起す計算式があるとして(たとえばイメージ的に下記のような)、 例)kekka = 46.6944444444444 / 87.3666666666667 オーバーフローを起させずに結果を出すことはできるのでしょうか。 基本的な疑問は下記と同じなのですが、結局のところsplitを使用したら、どうやって計算したのか、どのように解決しているかわかりません。 http://oshiete1.goo.ne.jp/qa500869.html 私の今行っているプログラムでは、結果は小数点第5位以下は切り捨て てもいいのですが、結果表示以外はできるだけ、小数点を切り捨てず、まじめに計算した結果に近い数値をだしたいのです。 よろしくお願いいたします。

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

  • ベストアンサー
  • nrb
  • ベストアンサー率31% (2227/7020)
回答No.1

オーバーフローを起させずに結果を出すことはできるのでしょうか。 理論上不可能です・・・・ コンピュターで計算するとき、有効桁数すがありますのでこれを超える計算はできません 注意:複雑なプログラムも組めば・・有効桁数を増やすことは可能です πの計算で100万桁けたとか有限になるのも・有効桁数数に限界があるからです、しいて言えば・・計算時間を気にしなければメモリー(補助記憶装置含む)より有効桁数の決まります 実際にπの計算で有効桁数100万桁は、複雑なプログラムにより有効桁数を増やしていますので・・・

honey_001
質問者

お礼

やはり、むずかしいということですね。 ありがとうございます。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

最近ではそういうのもオーバーフローと言うようになったのでしょうか? あおりでなく疑問です。 オーバーフローというとたとえば 2.0 ^ 1024 とか計算させたときの現象だと 思っていたのですが。 オーバーフローとは 【overflow】 - 意味・解説 : IT用語辞典 e-Words http://e-words.jp/w/E382AAE383BCE38390E383BCE38395E383ADE383BC.html それはおいといて、小数点以下5桁まで生かして結果を求めるということですが 一般的なコンピューターでの浮動小数点演算では有効桁数は十進数で15桁くらいですから、 整数部にも5桁使うとしても気にするほどの誤差は出ないと思います。 #間違った計算の仕方をしなければ 例に挙げられている > 46.6944444444444 / 87.3666666666667 は小数点以下15桁(ってこれPCでの普通の浮動小数点数で表現できる数字じゃないですね)ですから、 小数点以下5桁求めればいいところに持ってくるにはオーバーすぎるでしょう。 せいぜい6桁目か7桁目くらいまで計算しとけば十分のはずです。 ところでπは無理数ですので、何桁用意しようが有限桁の有理数(≒小数) で 表現することはできません。

honey_001
質問者

お礼

桁をへらしたりして、オーバーフローを起さないようにするしかなさそうですね。 ありがとうございました。

関連するQ&A