[#43103] 浮動小数点を比較するには — wada toshiki <wada-ts@...>

お世話になります。

21 messages 2007/01/11
[#43105] Re: 浮動小数点を比較するには — NISHIMATSU Takeshi <t_nissie@...> 2007/01/11

> Rubyレシピブック(P290)で 比較する数値の差を Float::EPSILON と比較する方法があり

[ruby-list:43123] Re: 浮動小数点を比較するには

From: pegacorn <subscriber.jp@...>
Date: 2007-01-15 00:53:40 UTC
List: ruby-list #43123
# ruby 固有の話ではなく、浮動小数の一般的な話題ですが…

07/01/13 に wada toshiki <wada-ts@joy.email.ne.jp> さんは書きました:
> KURODA Hirakuさん wrote:
> > ところで
> >>  (self - b).abs * abs は、(self - b).abs / abs の誤りだと思うのですが、
> >
> > この処理って、
> >  (self-b).abs
> > では駄目なんでしょうか?更にabs倍したり割ったりする意味が良く分かりません
> > でした。もしかして、レシピブックの方に何か根拠が載ってたりします?

比較する数が大きければ許容値も大きく、
比較する数が小さければ許容値も小さくするのが良いだろう
という考えだと思います。
で、比較する数と許容値との関係は、「比例」が良いだろうという考えで
導き出されたのが、

> ネットで検索したらこのようなのもありました。
>
> http://boost.cppll.jp/HEAD/libs/test/doc/floating_point_comparison.htm

ここに書かれている式だと思います。

ちなみに、書籍版の C プログラミング FAQ (ISBN4-8101-8097-2) に
書かれている話も参考になると思います。

んで、無理やり ruby の話に持っていくと、
「何れの方法で比較するにしても、実装は適切に隠蔽しましょう」
という話になります(?)

--
pegacorn

In This Thread