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