• ベストアンサー

少数の計算

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

  • VBScript 数値の少数化

    VBScript (ASP)での開発です。 3→3.0 10→10.0 1.005→1.0 以上のように、数値を小数第一位で固定して 表示したいと思っています。 で、FormatNumber(数値,1)というようにしてみたのですが、 小数値が数値に入る時は良いのですが、整数がきた時は 整数のままで困っています。 小数で表示する方法を教えていただけないでしょうか。

  • 計算機の機能のM+やM-を使って下記の計算をしたいのですが

    計算機の機能のM+やM-を使って下記の計算をしたいのですが (1)695×5×10.45=36313.75 (上記小数点切り捨て) (2)36313×0.9=32681.7 (上記小数点切り捨て) (3)36313-32681=3632 (1)の答えの小数点切り捨ては計算機の小数点をカットするやつ?でカットして (2)にイケるのですが、最後に関してはどちらもメモしながらやっている状態なので メモをせずに計算できる方法があれば教えていただけませんでしょうか? ヨロシクご教授願います

  • エクセルの少数点以下を切り捨てるには?素人です。

    エクセル自体が全くの素人の為、宜しくお願いします。 小数点以下を切り捨てにしたいのですが、たとえばAのセルの数値結果をINT等でBのセルに切り捨てしたものを表示するのでは無く、Aのセル自体の数値を切り捨てして表示するにはどうしたらよいのでしょうか? Aに入っている元の数値を表示したくないのですがSheet2に結果を出すとか、Aのセルを縮めて隠すほか方法はないのでしょうか?

  • 債券理論価格計算

    110+110×(0.5%-1.5%)×72÷365日 答 109.79 (キャリーコストは小数点第3位以下は切り捨て) どうしてもこの数値になりません。 どう計算すればよいのでしょうか・・・ よろしくおねがいします。

  • Excelの計算表示

    計算表示の結果小数点以下を切り捨てして整数値で表示してその合計をしたいのですが、もとの小数点の結果で表示されます。表示された値で合計を出すにはどうしたらよいのでしょうか?

  • エクセルでの計算式 0.5単位に

    エクセルの計算式で小数点第二位以下の数値を 0.5単位に四捨五入みたいな感じにする計算式ってありますか・・・? 例)0.27→0.5   56.78→57.0   126.23→126.0   5.256→5.5 という感じにですが、 一応切り捨ての場合は「=FLOOR(A1,0.5)」(セルA1の変換) みたいですがこれのどっかを書き換えればいいんでしょうか? よろしくお願いします。

  • エクセルの計算について質問です

    エクセルの計算について質問です 数値の計算で、電卓で算出した値とエクセルで計算した値とが異なり困ってます。 【計算内容】 A(整数) × B(小数部2桁) = C(整数) ※Cは小数点以下切捨てとしたい ※エクセル計算ではROUNDDOWNを使用 【実際の計算結果】 (1)10,000,010,000.00 × 9999.99 = エクセル:99,999,999,999,999、電卓:99,999,999,999,999 (2)10,000,010,000.01 × 9999.99 = エクセル:100,000,000,000,000、電卓:99,999,999,999,999.9999 (1)は電卓とエクセルで結果は一致しますが、(2)は一致しません。 エクセルで小数点以下第4位が丸められてるようです。 【エクセルで算出したい値】 (2)ではDに999,999,999,999と出力したいです。 関数INTやROUNDDOWNを使ってみたのですが、うまくいきませんでした。 セルCの書式設定と、どの関数を使用すればよいのか教えていただけると大変助かります。

  • 四捨五入の計算式は?

    エクセルで、小数点3位を切り捨ての計算式が↓です。 =ROUNDDOWN((RC[-8]*RC[-6])+(RC[-4]*RC[-2]),2) 小数点3位を四捨五入する場合の計算式は?どのようにすればいいのでしょうか?

  • Access97 Int関数

    小数点の切り捨てをしたくてクエリーで 以下の計算をしてみました。 =Int([個数]*[単価]) ところが以下の数値で計算させると結果が 50232となると思うのですが50231となってしまいます。 数量:460 単価:109.2 結果:50231(電卓で計算すると50232) 結果が小数点になるときは問題ないようです。 使い方が間違っているのでしょうか。 こういう場合Int関数を使うのが誤りなのでしょうか? だとしたら他に当てはまる関数があるのでしょうか? ちなみにテーブルの定義としては 数量:長整数型(小数点以下桁数0) 単価:単精度浮動小数点型(小数点以下桁数0) となっていますが小数点は表示されています。

  • エクセルの計算式の計算結果が合わないです。

    簡単な減価計算の計算式を作ったのですが、計算結果が合わず困っています。 A1に100,000,000 A2に=A1*0.15 B2に15 C2に=(1/B2)*2 とし、 一番求めたい計算式が =A2*C2なのですが、答えが2,000,000になります。 A2は15,000,000でC2は0.133(小数点以下3桁切り捨て)ですが、 乗算すると19,950,000にならないといけませんが、どうしても2,000,000になります。 誰か=A2*C2で19,950,000に計算がなる方法を教えてください。

専門家に質問してみよう