やじゅ@アプリケーション・ラボ わんくま支局

目次

Blog 利用状況

ニュース

プロフィール

MSMVP

設計時の見落とし - 端数処理する計算対象

私の経験の中であった、設計時の見落としをテーマとして何点か書いてみます。

とある業務システムの仕様書に中に、明細(帳票)出力の金額項目に「数量 x 単価」を端数処理するとだけ書かれたものがありました。

特に問題ないように思われますが、販売管理系の場合など請求先または支払先ごとに計算方法の指定がある場合がほとんどです。

例えば、下記のように明細毎に端数処理するのか明細集計後に端数処理するのかによって誤差が発生します。

例 端数処理の仕方
  明細毎に端数処理するのか、明細集計後に端数処理するのか
  明細毎に端数処理
  11/ 2 5個 5x20.25 = 101.25 四捨五入 = 101 
  11/ 3 5個 5x20.25 = 101.25 四捨五入 = 101   計 202
  明細集計後に端数処理
  11/ 2 5個
  11/ 3 5個 (5+5)x20.25 = 202.5 四捨五入 = 203 計 203

このように集計レベルによる端数処理により誤差が出るため、仕様者およびお客様に確認が必要となります。


この手の問題は、消費税計算も同様です。ognacさんも書いておられますが
消費税の悩み http://blogs.wankuma.com/ognac/archive/2007/04/25/73138.aspx

消費税計算の場合は、明細単位、請求単位、請求明細単位、合計請求単位などあります。
但し消費税の方は、常識となっている点では設計としては漏れにくいです。


消費税の明細毎と請求一括毎の単純な確認テスト方法として、下記の2明細を作成
金額 550円 消費税率:5% 端数処理:四捨五入 
 明細毎
550 x 5% = 27.5 = 28
550 x 5% = 27.5 = 28 計 56円
 請求一括
(550 + 550) x 5.5 = 55円

このように、明細毎は56円、請求一括は55円となり、確認OKってな感じです。

投稿日時 : 2008年2月7日 19:06

コメントを追加

No comments posted yet.
タイトル
名前
URL
コメント