重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (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/k …

 Access2000からRoundがあるのに、何故これがあるんでしょう?
 intを使って解説してあります。


結論として(多分)、Access2000から組み込み関数としてRoundが追加されていますが、いわゆる四捨五入ではないようです。(Excelで使っている関数とは違っている!)


私はAccessで四捨五入(整数にする場合)する場合は、
 INT(数値 + 0.5) や
 Format(数値,"0")
 ExcelのRound関数をAccessVBA内で使ったりしています。

ご参考に。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/07/09 05:14

nishi6さんの回答でほとんど述べられていますので、原因については省略します。


「Banker's Rounding」と呼ばれる、財務・統計計算で用いられる四捨五入の規則だそうです。

金額の四捨五入の方法ですが、私は以下の計算式で計算しています。(多分冗長です^^;)
=int(abs(金額)+0.5)*sgn(金額)
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/07/09 11:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!