2010年8月15日日曜日

丸め誤差

進数変換を勉強した人はわかると思いますが,二進数では1/(2^n)以外の小数は有限の桁数で表現することができません.
例)
0.5・・・(0.1)2
0.25・・・(0.01)2

表現出来ないからと言って,無視する訳にもいかないので,一定の有限な桁数の浮動小数点実数を表現しています.このとき適当な桁数にすることを丸めると言い,このとき生じる誤差を丸め誤差と言います.

float sum = 0.0;
for(int i=0;i<10;i++) {
sum += 0.1;
}

このようなコードではsumは1.0にはならないでしょう.
実数型の変数は丸め誤差が必ず生じる事を念頭に置いてプログラミングするすることが必要です

0 件のコメント:

コメントを投稿