• ベストアンサー

アクセス2000の四捨五入がうまくできません。

アクセスのクエリーを使って、消費税計算を行いました。消費税は四捨五入ということで  消費税:ROUND([金額]*0.05) と計算式をいれて計算しましたが、思うような結果になりませんでした。原因がわかりません。教えてください。 

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

【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内で使ったりしています。 ご参考に。

wamossan
質問者

お礼

詳しく教えていただきまして、ありがとうございます。INT関数でやってみます。

その他の回答 (1)

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.2

nishi6さんの回答でほとんど述べられていますので、原因については省略します。 「Banker's Rounding」と呼ばれる、財務・統計計算で用いられる四捨五入の規則だそうです。 金額の四捨五入の方法ですが、私は以下の計算式で計算しています。(多分冗長です^^;) =int(abs(金額)+0.5)*sgn(金額)

wamossan
質問者

お礼

ありがとうございます。INT関数でやったほうが確実のようですから。式を変更してやります。お世話になりました。