- ベストアンサー
AccessのSQLで算術型丸め処理をしたい
いつも楽しく勉強させていただいております。 環境はWin7でAccess2013です。 Accessを使って請求書のシステムを作っています。 顧客からExcelで検算してみたが計算が違うのではというクレームが来ました。 調べてみるとAccessのSQLのRound関数とExcelのワークシート関数のRound関数では結果が異なることが分かりました。 前者はRound(2.5,0)が2になり、後者は3になります。 銀行型丸め処理と算術型丸め処理というらしいです。 (実はついさっき得たばかりの知識です)。 AccessのSQLで算術型丸め処理をするにはどうしたらいいでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>AccessのSQLで算術型丸め処理をするにはどうしたらいいでしょうか。 0.5を足してINTで切り捨てして下さい。 INT(元の値+0.5) これで「2.5」が「3」になります。 小数点第二位で行う場合は INT(元の値*10+0.5)/10 のように、10倍して0.5を足してからINTで切り捨てして10で割って桁を戻します。 これで「0.25」が「0.3」になります。 >銀行型丸め処理と算術型丸め処理というらしいです。 算術型丸め処理(普通の四捨五入)では「値が増加する方が多くなる」ので、四捨五入した後に合計を取ると、合計が「大きめ」になってしまいます。 銀行型丸め処理には「偶数丸め」と「奇数丸め」の2つがあり、値が増加するのと値が減少するのが均等になるため、丸めした後に合計を取っても、合計が狂いにくくなります。 因みに、AccessのSQLのRound関数は「偶数丸め」なので「0.5→0、1.5→2、2.5→2、3.5→4…」となります。