• ベストアンサー

Accessの小数点以下の表示について

Access2002にて、クエリの結果やフォームのテキストボックス等で 見た目では「9344」と表示されているのに、カーソルを合わせると 「9343.99979114532」という風に表示されてしまうのを 防ぎたいのですが、どうやったらいいのでしょうか? 実はこの結果の小数点を切り捨てているのですが、 そうすると「9343」となってしまいます。 (ちなみに上記例の場合、クエリの計算式としては 29200×0.32と計算されており、電卓をたたいても「9344」の はずですが、上の様に表示されてしまいます。) また普通に計算して小数点の出るものは切り捨てたいので なんとかして裏側で「9343.99979114532」のように計算されて しまっているのを防ぎたいのですが ご存じの方教えて下さい。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

まず、次の関数の結果を見て下さい。 Public Function Kakezan_1(ByVal Q As Single, _               ByVal P As Currency) As Currency    Kakezan_1 = Q * P End Function Public Function Kakezan_2(ByVal Q As Variant, _               ByVal P As Currency) As Currency    Kakezan_2 = CCur(Q) * P End Function [イミディエイト] ? Kakezan_1(0.32, 29200) 9343.9998 ? Kakezan_2(0.32, 29200) 9344 質問者は、 Kakezan_1 関数と同じ処理をさせていると推察されます。 仮に、 Kakezan_2 関数と同じ処理であれば、小数点の丸め誤差は発生しません。 Kakezan_1 関数は、 Single型とCurrency型の混合計算をしています。 この場合、小数点の丸め誤差が発生します。 Kakezan_2 関数は、 Single型をCurrency型に置換してからCurrency型同士で計算させています。 小数点以下を切り捨てるのではなく、そもそも、丸め誤差の発生を防がれたがいいです。 参考になさって下さい。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

要するに0.32が2進数で表示できないことが理由ですね。 ですので、=INT(29200×0.32+0.5) というように結果を四捨五入するか 0.32ではなく32を掛けて100で割るというように小数点以下の計算を させないかのどちらかに、クエリの計算式を修正すればいいです。

関連するQ&A