[#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:43127] Re: 浮動小数点を比較するには

From: "きむらこういち" <hogemuta@...>
Date: 2007-01-15 15:23:59 UTC
List: ruby-list #43127
木村です。

07/01/15 に Tadashi Saito<shiba@mail2.accsnet.ne.jp> さんは書きました:

> これはBigDecimalを使っても、やっぱり困る場面なのでしょうか?

BigDeciamlはマニュアルによれば、以下の通り基数が10^なので、
Cでいうところのdouble で使われるような2が基数の浮動小数点形式の
ものとは異なり、十進→二進の変換時の打切りが原因の誤差はでない
と思います。

> BigDecimal は <浮動小数点数> = 0.xxxxxxxxx*10**n という10進形式で数値を保持します。
> しかし、計算機の浮動小数点数の内部表現は、言うまでもなく <浮動小数点数> =
> 0.bbbbbbbb*2**n という 2進形式が普通です(x は 0 から 9 まで、b は 0 か 1 の数字)。
> BigDecimal がなぜ10進の内部表現形式を採用したのかを以下に説明します。

くわしくは
http://www.ruby-lang.org/ja/man/?cmd=view;name=BigDecimal
をどうぞ。

-- 
木村浩一
 I thought what I'd do was, I'd pretend I was one of those deaf-mutes
or shoud I?
 mail kbk at kt.rim.or.jp
 web  www.kt.rim.or.jp/~kbk/zakkicho/index.html

In This Thread