ACCESSでクエリを実行した際に、小数点の表示がおかしくなる件について


なんか、クエリである指数をある値(例えば原価)などにかけた場合、
小数点5位くらいから値がおかしくなるという現象に遭遇しました。


そもそもこんなことが起こるのかというと、
コンピュータの内部表現は2進数なので、例えば1/3なんかは表現できないわけです。
そこで、値を四捨五入したり切り捨てたりして丸める必要がでるのですが、そのときに微妙に誤差が出る。


それと、ACCESSにおいては
データ型によって、値の表現が大きく違います。


詳しくはこちらをどうぞ
http://homepage2.nifty.com/MrUr/nyumon/nyumon01.htm


要は通貨型なんかと掛け算しちゃったりすると、
通貨型は小数点は4位までしか表現できないので、誤差が良く出るっぽい。


で、


その他、RoundやIntの関数を使って丸め誤差が極力出ないようにしました。

たとえば、今回は

ある指数によって商品の原価が算出されるというときに


ある指数(固定小数点9位)=仕入金額(通貨型)/ 積数(数値型)


という形で求めるのですが、


通貨型は掛け算の時に使うとおかしくなるので、Intで小数点以下を消してやり
掛けてやるとちゃんとした値になります。


なんだか気持ちの悪いと言う人は


こちらのページを利用して、データ型を正しく変換してみるといいかもしれないです。
http://makotowatana.ld.infoseek.co.jp/access/vagrptypeconversion.htm