- ベストアンサー
アクセス 関数について
業務で、アクセスを利用して顧客データ管理してます。 クエリで金額計算を行っていますが、整数をうまく計算できません。 int([金額]*[料率])として販売価格を出すようにしているのですが 料率が70%の場合、1円合わなくなります。 例えば int([43,100]*[70%])とした場合 30,169円と表示してしまいます。 Roundを使ってみると30,170円と表示しましたが、四捨五入されるため、ほかのデータに 1円誤差が生じてしまいます。 試しにfix関数を入れてみましたが、intと同じ結果になりました。 前任者から、社内システムを引き継いだものの アクセス初心者で困っております。 良い解決法をお教えいただけないでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
浮動小数点型の数を扱う上で避けられない問題です。 原因は、43,100*70%=30169.99999999・・・ となることがあるため、小数点以下を切り捨てると30169になってしまいます。 簡単な対処方法は、 int([43,100]*[70%]+0.00000001) と、微小な数を足してから切り捨てする。 ただしこの方法は、小数点以下も高い精度が必要な計算には適しませんが。
お礼
ありがとうございました。 早速、試してみます
補足
ありがとうございました。 実際試したところ、問題がクリアになりました。