[#43085] 1.9SVN HEADで拡張ライブラリがインストールされない? — okkez <okkez000@...>
okkezといいます。
9 messages
2007/01/02
[#43086] Re: 1.9SVN HEADで拡張ライブラリがインストールされない?
— Yukihiro Matsumoto <matz@...>
2007/01/02
まつもと ゆきひろです
[#43103] 浮動小数点を比較するには — wada toshiki <wada-ts@...>
お世話になります。
21 messages
2007/01/11
[#43105] Re: 浮動小数点を比較するには
— NISHIMATSU Takeshi <t_nissie@...>
2007/01/11
> Rubyレシピブック(P290)で 比較する数値の差を Float::EPSILON と比較する方法があり
[#43112] Re: 浮動小数点を比較するには
— wada toshiki <wada-ts@...>
2007/01/13
NISHIMATSU Takeshiさん wrote:
[#43114] Re: 浮動小数点を比較するには
— KURODA Hiraku <hiraku@...>
2007/01/13
初めまして、黒田と申します。
[#43134] enctype="multipart/form-data"指定したデータについて — "Nobuyuki Inaba" <nobuyuki.inaba@...>
いなばと申します。
5 messages
2007/01/23
[ruby-list:43120] Re: 浮動小数点を比較するには
From:
KURODA Hiraku <hiraku@...>
Date:
2007-01-14 17:58:33 UTC
List:
ruby-list #43120
黒田です。
本題と外れた話題で恐縮ですが(汗
wada toshiki wrote:
> 0.1+0.1としても単純に累積はしないのですが。
>
> 0.1 = 1.00000000000000010000e-01
> 0.2 = 2.00000000000000010000e-01
> 0.3 = 3.00000000000000040000e-01
> 0.4 = 4.00000000000000020000e-01
次のようなスクリプトで調べてみました。
===
#!/usr/bin/env ruby
def pe(x, prefix="")
printf("#{prefix}%0.30e\n", x)
end
x = 0
(1..20).each do |i|
y = x+0.1
pe(y-x, "#{i} : ")
pe(y)
x = y
end
===
結果はこちら
===
1 : 1.000000000000000055511151231258e-01
1.000000000000000055511151231258e-01
2 : 1.000000000000000055511151231258e-01
2.000000000000000111022302462516e-01
3 : 1.000000000000000333066907387547e-01
3.000000000000000444089209850063e-01
(中略)
19 : 1.000000000000000888178419700125e-01
1.900000000000000577315972805081e+00
20 : 9.999999999999986677323704498122e-02
2.000000000000000444089209850063e+00
===
どうも、書いた側で0.1ずつ足したつもりでも、足した後と足す前との差は0.1
(のdouble近似)からまた少しずれてしまうみたいですね(桁落ち誤差?)
このケースだと、有効数字は16桁程度なんでしょうか
> レシピブックにはこれに対する説明では、
> 「機械イプシロン(1.0と1.0より大きい最小の数の差)」
(中略)
> ネットで検索したらこのようなのもありました。
>
> http://boost.cppll.jp/HEAD/libs/test/doc/floating_point_comparison.htm
こういうやり方があったんですね。恥ずかしながら、初めて見ました(計算機の
授業で習った、掛けたり割ったりしない方法を何の疑いもなく使ってました)
--
--------------------------------------------------
黒田 拓(くろだ ひらく)
hiraku@sapporo.email.ne.jp
http://www.hinet.mydns.jp/~hiraku/
--------------------------------------------------