スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

doubleの比較にはまる

C++でプログラミングしていて、doubleの比較を行う時は要注意。普通にif(a==b)とかやってしまうと嵌る。

欲しい精度を決めて、例えば1.0E-10の精度が欲しかったら fabs(a-b) < 1.0E-10 と書く。

このページは xfy Blog Editor を利用して作成されました。

スポンサーサイト
コメント

No title

double型をカプセル化したクラスを作り、
上記判定条件で operator == を再定義。
普通の等号、不等号は .eq()、.neq() として残しておく。

あるいは .compare() というメソッドを純粋仮想関数にした
Comperable というクラスを作り、
それを上記のクラスに mix-in。
operator 類は Comperable クラスで定義し、
Double クラスでは compare() メソッドのみ定義する。

・・・とか、どう?

No title

そうですね・・・
比較は.compareTo(double other)かな、名前的に。

でもめんどくさかったんで・・・
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。