Archive for 5月 14th, 2009
CIntとRoundの予想外結果
by achi on May.14, 2009, under プログラム
ごく常識的に利用してきたCInt関数とRound関数。
ある日部下から指摘を受けて妙な現象に遭遇。
計算結果が期待どおりになっていないと報告を受ける。
調べてみると、「まるめ」を行っている為に期待した四捨五入とは異なる結果が格納されている事が判明した。MS-KBで調べてみると、独自の誤差を調整する目的で偶数に近い方でまるめ処理が行われているような事が記載されている。
ここでCIntとRoundが使えないことになる。
これまで信頼して利用していただけに、この結果には残念な思いが残るが、それだけ浮動小数点の扱いは慎重に行うべきだと言う事か。
ASPも.NETもオリジナルの四捨五入関数が必要だな。
念のため、現役SEにも尋ねてみた。すると返答は、
「業界では常識だよ」との事。もっと早く教えてくれよ。。。