• ベストアンサー

アクセス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関数でやったほうが確実のようですから。式を変更してやります。お世話になりました。

関連するQ&A

  • Access2000 小数第3位で四捨五入

    質問させていただきます。 Access2000で以下の計算式を作りました。 金額 = Round(重量 × 単価,2) これは「金額」を小数第3位で四捨五入します。 ところが以下の数値の場合、正しく計算してくれません。 764.00 = 0.479 × 1595 本当は 764.005 だから 小数第3位で四捨五入すると 764.01 になると思うのですが・・・。 ちなみに以下の値では・・・ 754.44 = 0.473 × 1595 (754.435だから小数第3位で正しく四捨五入されています)。 やり方が悪いのでしょうか?それとも他に正しく計算できる方法があるのでしょうか?

  • ACCESSで四捨五入されて困っています

    通貨の消費税計算で単純に式ビルダで[金額]*1.05とすると四捨五入されてしまいました。切捨てる場合はどのように設定すればいいのですか

  • ACCESSでの四捨五入について

    フォームで消費税を計算する場合に コントローソースに =[金額]×0.05をあたえ 少数点以下の桁数は0にしています この場合に消費税額が正の場合には小数点1ケタ目が四捨五入 されて 例 \251.5 → \252となりますが 負の場合には \-251.5 → \-251となります 伝票を赤黒する場合に誤差1円が出てきます 皆さん、こういった場合にどう対応されていますか? よろしくお願いします。

  • Access97で四捨五入したい

    数(納品テーブル)単価(品名テーブル)を元にしたクエリーでレポートを出しています。 レポート上で数*単価を「計」とし、「計」*1.05を「税込み」として横計算しています。   数  単価  計  税込 ----------------------------   2   198  396  416 上の場合通貨型にすると416になりますよね でも本当は415.8になっているようで フッターで合計すると微妙に違ってきます これを四捨五入した数値を合計できるようにしたいのですがAccess97には四捨五入関数がないと聞きました。 どのようにすれば合計できるのかできるだけ詳しく教えていただけないでしょうか。 もう何日もここで詰まってます。 よろしくお願いします

  • 四捨五入について

    "1.005"を小数点第三位で四捨五入して、"1.01"にしたいのですが、 "Math.round(1.005*100)/100"だと1.005*100が100.4999999999998になってしまい、結果的に"1.00"が返されてしまいます。何か良い解決方法はないでしょうか?

  • Round関数は四捨五入?

    あるサイトで・・・ ”多くのRound関数は、偶数丸めを採用しており、 丸め単位のまんなかで、どっちつかずの場合は、偶数側を採用する。” ということが書いてあるのを読みました。 しかし、SQL Server2000のクエリで select round(1.25,1) と実行すると 1.2ではなく1.3 が返ってくるので、四捨五入されている気がします。 厳密な四捨五入と異なる値が返ってくるパターンはどういう式でしょうか? それとも、SQL Server2000のRound関数は厳密な四捨五入なのでしょうか? ご存知の方がいたら教えてください。 よろしくお願いします。

  • #Func! 四捨五入

    T_一覧の件数フィールドには、1234などの数字が入っているのですが、10の位を四捨五入したいのですが、 クエリでどうやって作ればいいのでしょうか? SELECT T_一覧.件数, Round([T_一覧]![件数],-2) AS 四捨五入 FROM T_一覧; にすると、#Func!になってしまいます。

  • アクセスで四捨五入

    アクセスでの四捨五入を教えてください。 千の値で丸めたいです・・・ <例> 2,499 ⇒ 2,000 1,800 ⇒ 2,000 2,500 ⇒ 3,000 百の位を見て、四捨五入し、千円単位で丸めたいです。 よろしくお願いします。

  • 四捨五入について

    今、SELECT文で取得した値をround()を使って四捨五入したいのですが、構文エラーになります。 SELECT ROUND( SELECT 0.2*(SLECT number FROM sample WHERE id =1) ); ROUND()内のSELECT 0.2*(SLECT number FROM sample WHERE id =1) で、値が12,6のように返ってきます。 しかし、round()で四捨五入して13を取得しようとすると構文エラーになります。 どうしたらいいのでしょうか? よろしくお願い致します。

  • アクセスでの四捨五入切り捨て

    アクセスで計算した式の一番右の数字を四捨五入しないで切り捨てるにはどうすればよいのでしょうか?? ちなみに計算式はPRODUCT関数を使っています。 初歩的な事ですが教えてください。

専門家に質問してみよう