• ベストアンサー

有効桁数未満は切り捨てていますか?

Roundup関数に関する質問と回答を拝見して、「有効桁数未満の値は切り捨てるのが一般的なのかな」との考えに到達しつつあります。正確に言えば、「丸めるべきかな」「小数点以下2桁で管理する場合、0.0001は0.000と評価する」ということです。 恥ずかしながら、丸めるという発想に至らずに、締切り処理時にゴミ値を探索して削除するという手法を取ってきました。プロの意見を賜りたい理由です。

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

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

>0.1cmは切り上げても良いが、それより小さい値まで切り上げろとは言っていない というのがユーザーの要求であれば 0.1未満は切り捨てる、0.1以上は切り上げるということになりましょう。 それが、要求なのですからウダウダいってもしょうがありません。 それが、常識的なのかどうかと言えば、 数学などの0が無限の精度を有しているとかではなく、 実際の計算の場面では、ニアゼロ(0.0001とか)がでてきますが(本来は0だが計算誤差などによってゼロでない)、それがゼロとは見なせなくて1に繰り上がると言えば、ちょっと常識とは異なると言えるのではないですか。 (つまり値の=は、数学とは違ってある(誤差を含めた)範囲でイコールとすべきであるというような意味) そういう意味で言えば、 「0.1cmは切り上げても良いが、それより小さい値まで切り上げろとは言っていない」という主張は、そういう意味合いが含まれていて、ただ計算の手順として切り上げろと言われたから切り上げたのであって文句を言うのは筋違いであるとまでは言えないのではないでしょうか。 結局の処そうした動作については、ユーザと提供側の間で詳細をつめておくべきであって、そうした動作に対する認識の違いがあったとしたら、ユーザーに合わせるべきですよね。 (実際の処は、大きなプロジェクトになれば、それを飲むことができるかどうかというのは別なのかもしれませんが)

noname#22222
質問者

お礼

ご指摘以前で、そういう事態さえ想定していなかったというのが本当のところです。「ニアゼロ」という概念も回答で知った次第です。これで、ExcelのRoundup関数のAccess版の全容が確定しました。ありがとうございます。

その他の回答 (2)

回答No.3

0.0001が10個集まれば、0.001なので、大きな誤差が生まれてしまいます。 科学技術計算などの場合は、大きな値同士、小さな値同士を先に計算し、最後に全体を計算し、演算精度による誤差を少なくします。途中で切り上げor切捨てが必要な場合を除き、切り上げor切捨ては、演算の最終結果で行います。 集計などを行う前の段階で、切り上げor切捨てすると誤差が生じますし、切り上げならともかく切り捨てると、「~が足らない」、「~が入りきらない」といったことになります。 足らなくなるより、余った方が多くの場合、ベターだと思いますが?

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

(プロではないですが、^^;) 用途によると思います。 例えば、消費税の計算などでは1円未満は切り捨てるという方針がある時には切り捨てるのでしょうし。 単純に、合計を求める場合に、全ての数値を切り捨てていたら、その誤差が集積してしまいますので、そのような場合は、五捨五入とかの方法も用いられます。 基本的には、切り捨てる場合と丸める場合では累積した計算での誤差の累積に影響がでるので、丸めるのが普通だと思います。

noname#22222
質問者

お礼

舌足らずの質問への回答あるがとうございます。 1、在庫の管理単位をユーザーが設定できる。 2、在庫の端数処理をユーザーが設定できる。 というケースでの不具合と処理の改善方向についての質問です。 想定外であったのが、リボン在庫でした。 メーター単位でcmの精度を設定されました。 加えて、切り上げ処理を選択されました。 小数点以下4桁を切り捨てて小数点以下3桁目で切り上げるとしなかったので、0.01cmも1.0cmと評価された次第です。 「これでは、0.00001も1cmと切り上げるではないか?」というクレームに近い疑問を受けた次第です。「0.1cmは切り上げても良いが、それより小さい値まで切り上げろとは言っていない」というのが言い分です。 「うーん」と思っていたところに Excel のROUNDUP関数を知り質問に至ったということです。

関連するQ&A