- ベストアンサー
アクセス2000の四捨五入がうまくできません。
アクセスのクエリーを使って、消費税計算を行いました。消費税は四捨五入ということで 消費税:ROUND([金額]*0.05) と計算式をいれて計算しましたが、思うような結果になりませんでした。原因がわかりません。教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
【AccessオブジェクトブラウザのHELP】 Round 関数 機能:指定された小数点位置で丸めた数値を返します。 Round(expression [,numdecimalplaces]) expression 必ず指定します。丸めを行う数式を指定します。 numdecimalplaces 省略可能です。丸めを行う小数点以下の桁数を表す数値を指定します。 省略すると、Round 関数は整数値を返します。 【Microsoft Access2000 のHELP】 ROUND 数値 を四捨五入して指定された 桁数 にします。 ROUND(数値, 桁数) 数値 四捨五入する数値を指定します。 桁数 四捨五入する桁数を指定します。負の値を指定すると小数点の左まで四捨五入され、 0 (ゼロ) を指定すると最も近い整数に四捨五入されます。 【Microsoft Product Support Services】 [ACC97]四捨五入の計算方法 文書番号: JP416839 文章の最後に『Microsoft Access 2000 以降のバージョンでは、VBA に Round 関数が追加されました。』 があります。 【計算例:イミディエイトウインドウで】 ROUND(1.4)=1 ROUND(2.4)=2 ROUND(1.5)=2 ROUND(2.5)=2 ROUND(1.6)=2 ROUND(2.6)=3 整数位が奇数偶数で答えが違う?(0.5の処理) Round(10.375,2)=10.38 Round(10.385,2)=10.38 これも? ROUND(9.575,2)=9.57 ROUND(CDec(9.575),2)=9.58 !と思ったが、いろいろ行って? 【小数点以下第一位を四捨五入する方法】Access 2002 for Windows http://www.microsoft.com/japan/enable/training/kblight/T007/6/02.htm Access2000からRoundがあるのに、何故これがあるんでしょう? intを使って解説してあります。 結論として(多分)、Access2000から組み込み関数としてRoundが追加されていますが、いわゆる四捨五入ではないようです。(Excelで使っている関数とは違っている!) 私はAccessで四捨五入(整数にする場合)する場合は、 INT(数値 + 0.5) や Format(数値,"0") ExcelのRound関数をAccessVBA内で使ったりしています。 ご参考に。
その他の回答 (1)
- aptiva
- ベストアンサー率36% (193/529)
nishi6さんの回答でほとんど述べられていますので、原因については省略します。 「Banker's Rounding」と呼ばれる、財務・統計計算で用いられる四捨五入の規則だそうです。 金額の四捨五入の方法ですが、私は以下の計算式で計算しています。(多分冗長です^^;) =int(abs(金額)+0.5)*sgn(金額)
お礼
ありがとうございます。INT関数でやったほうが確実のようですから。式を変更してやります。お世話になりました。
お礼
詳しく教えていただきまして、ありがとうございます。INT関数でやってみます。