• ベストアンサー

アクセス 関数について

業務で、アクセスを利用して顧客データ管理してます。 クエリで金額計算を行っていますが、整数をうまく計算できません。 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