現在、統計プログラムを作成しているのですが、以下の場合に計算が合わなくなります。
dWork as double
d = 4.1-4
dに9.99999999999996E-02が・・・
なぜこのような現象が起こるのでしょうか?
わかる方がいらっしゃったら、ご助言お願いいたします。
http://tinyurl.com/nsbd8
とりあえずググっておきました
>わかる方がいらっしゃったら、ご助言お願いいたします。
浮動小数点の
余剰加算、余剰減算による演算誤差による結果の相違
VBに限らず他の言語でも起こり、
プログラミングを書く人ならば知っていなければはまる問題です。
当然お約束の回避方法があり、WEBで検索すれば見つけられます。
CPUだと10進数で割りきれるかずでも、
2進数で処理するので無理数になったりします・・
0.1を10回たしても1にならないとか。。
小数点を使わないように10^n(n>1)倍するとか、
VBならCurrency?型などセーフティーな型を使うなどが考えられると思います。。
ツイート | ![]() |