• ベストアンサー

アクセス 関数について

業務で、アクセスを利用して顧客データ管理してます。 クエリで金額計算を行っていますが、整数をうまく計算できません。 int([金額]*[料率])として販売価格を出すようにしているのですが 料率が70%の場合、1円合わなくなります。 例えば int([43,100]*[70%])とした場合 30,169円と表示してしまいます。 Roundを使ってみると30,170円と表示しましたが、四捨五入されるため、ほかのデータに 1円誤差が生じてしまいます。 試しにfix関数を入れてみましたが、intと同じ結果になりました。 前任者から、社内システムを引き継いだものの アクセス初心者で困っております。 良い解決法をお教えいただけないでしょうか。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

浮動小数点型の数を扱う上で避けられない問題です。 原因は、43,100*70%=30169.99999999・・・ となることがあるため、小数点以下を切り捨てると30169になってしまいます。 簡単な対処方法は、 int([43,100]*[70%]+0.00000001) と、微小な数を足してから切り捨てする。 ただしこの方法は、小数点以下も高い精度が必要な計算には適しませんが。

gatyapinhawks
質問者

お礼

ありがとうございました。 早速、試してみます

gatyapinhawks
質問者

補足

ありがとうございました。 実際試したところ、問題がクリアになりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESSの関数

    知人に頼んで作ってもらった、請求管理のデータベースがあります。 請求金額、入金金額、その差額が一覧で見れるようになっていますが 差額が四捨五入できておらず、自分でどうにか四捨五入をして整数で 分かるように設定をし直しました。(ACCESSに関してはド素人です) その時入力したのが 差額: Nz([入金合計]-[請求合計]) でした。 その後知人が修正したものを持って来てくれたので入れ替えたのですが 次は小数点の関係からか、なぜか1円誤差が出るようになりました。 自分でしたときは大丈夫だったので、関数を確認したところ 上記nz部分が、 fix となっていました。 誤差が出るのはややこしいので、Nzに戻そうかと思うのですが 何か問題があるか教えてください。 ヘルプでfixの説明を読みましたが、いまいち意味がわかりませんでした。 どなたかよろしくお願いいたします。

  • access2003と2007のRound関数について

    以前見た質問でround関数で四捨五入をするときは、 access97は銀行型の四捨五入をする access2000はround関数にバグがある という回答を見ました。 http://oshiete1.goo.ne.jp/qa3593239.html ちなみにaccess2003と2007はどうなんでしょうか? やはり四捨五入はint関数を使うほうが無難なのでしょうか? ご存知の方いらっしゃいましたらご教授下さい。 よろしくお願いします。

  • ACCESSのRound関数について

    お世話になっております。 ACCESSのクエリでRound関数を使い、小数点以下を四捨五入した値を表示させようと思いましたが、なぜか 1876.5→1876 と表示されてしまいます。 同じ列のほかのセルはちゃんと四捨五入した値が表示され、5389.5 も 5390 のように表示されます。 どなたか思い当たる方原因を教えていただけますでしょうか。 よろしくお願いします。

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

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

  • Access2003で小数点第1位未満四捨五入

    Access2003で小数点第1位未満四捨五入の表示をするにはどうしたらいいのでしょうか?int関数を使用して平均点の四捨五入をしたのですが、整数エラーになります。Roundsも使ったり色々やったのですが、どうやら違うようなので、困っています。助けて下さ~い。

  • 四捨五入で計算された数字を、整数で返す関数を教えてください。

    エクセルで見積金額をだす時に、小数点以下非表示で計算すれば、100.4+100.9+100.4=301.7 302となります。 関数を使い小数点第1位四捨五入で、これを301にしたいのです。 小数点第一位を四捨五入して整数で返すと言うのでしょうか? (小数以下斬り捨てだと、300になります。INT関数がそうなのでしょうか?) すみません、関数がまだ良く分かりません。間違っていたり説明がまずかったなら、ごめんなさい。

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

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

  • エクセルについて教えてください。

    エクセルは独学で覚えたので、曖昧に覚えてしまい困っています。よろしくお願いします。 エクセルの関数で ROUND関数があります。 ROUND は四捨五入 になると思いますが、 ある計算を ROUND でやり、答えを 四捨五入して整数で出します。 同じROUNDを使って、その計算を 5つ程度して その 出た(5つの) 答えを合計(SUM)します。 私はエクセルにあまり詳しくないので、分かりませんが、単純に ROUNDで整数にしたのだから、合計も整数で合うはずだと思うのですが、 なぜか、合計が 1 違う場合が多々あります。 説明が分かりにくくてすみません。 例えば、合計が 本来は 125  と ならなければならないのに、 ROUNDで出した 答えを すべて 合計(SUM)すると  126 とか 124 と 1つ ずれて表示されてしまいます。 私のROUNDに関する覚え方が間違っているのでしょうか? それから、ROUNDでだした 答えを 整数のままで足し算をして、合計が合うように計算をするにはどうしたらよいでしょうか? よろしくお願いします。

  • round関数について

    試しにエクセルで次の計算をしてみてください。 -16.76 7.9 -11.45 -8.88 -1 4.26 33.78 以上を全部足します。つまり「=sum(a1:a7)」です。当然「7.85」になります。 次に四捨五入します。round関数で小数点第2位を四捨五入して、第1位まで表示させます。つまり、「=round(sum(a1:a7),1)」ということです。すると「7.8」を返しました。 ん?「7.9」なのでは?と思い、次にこんな計算をしてみました。 A・・・=round(sum(a1:a7),2) B・・・=round(A,1) つまり、Aでいったん小数点第3位を四捨五入させた上で、その値を今度はBで小数点第2位を四捨五入させ、最終的に小数点第1位まで表示させたわけです。すると、ちゃんと「7.9」を返しました。 なんでこんな風になるのでしょうか?どうして一発で「7.9」にならないのでしょうか?

  • エクセルのROUND関数について

    小数点以下を四捨五入して整数にするには,例えば ROUND(1.52,1) なら,2になると思うのですが, ROUND(1.52,01) としても2となります. 1としても0.1としても結果は必ず等しくなるのでしょうか? よろしくお願いします.

このQ&Aのポイント
  • 40センチ弱のドールを入れられる持ち運び用ケースを探しています。
  • 専用ケースがないため、大きめのリュックに入れる予定ですが、傷がつかないようにポーチ状の布ケースで保護したいです。
  • 縦37センチ×横10センチ×奥行10センチほどの長方形のポーチを販売しているお店やハンドメイド作家を探しています。
回答を見る