[H8-ML(4652)] Re: これも訂正です( Re: H8/3052で浮動小数点演算がうまくできず困っています。)
From: HSSR <hssr@xxxxxxxxxxxxxxxx>
Date: 2004年04月10日(土)01時05分55秒
HSSRです

> 組込系だけでなく、PC系のC言語もマスタしたいと思っていたので参考になりま
> す。
であれば
>   float a;
>   a = 0.1;
>   if (a == 0.1) ....
という、浮動小数点の等号比較はfloatであろうがdoubleであろうがやめた方が
良いと思います
演算元の数値によって出たりでなかったりというやっかいなバグになります
最終的には2進演算なので誤差が発生します。通常は無視できる誤差かもしれま
せんが等号の演算の場合にはあくまで違う数値と見なされます
if(a==0.1)
としたいのであれば
求める精度に応じて
if(a>0.099 && a<0.101)
などとした方が安全です
組み込みの場合はかなりオーバーヘッドになりますので、整数で処理した方がよ
いと思いますが

--------------------------------------------------------
HSSR
E-Mail : hssr@xxxxxxxxxxxxxxxx
Web    : http://www.ne.jp/asahi/hss/home/earthquake/
--------------------------------------------------------

スレッド概略
[4619(R)](起点)
 └[4644(U)]
   └[表示中]
     ├[4653(1)]
     ├[4655(2)]
     └[4671(3)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]