[#28653] create header (Re: Re: ossl_cipher.c:124: warning: control reaches end of non-void function) — "Nobuyoshi Nakada" <nobu@...>

なかだです。

8 messages 2006/05/18

[ruby-dev:28644] ruby_strtodの精度

From: "U.Nakamura" <usa@...>
Date: 2006-05-16 09:41:38 UTC
List: ruby-dev #28644
こんにちは、なかむら(う)です。

久し振りに1.8でtest-allしてみたら幾つかのテストでFailureが増
えていることに気付きました。

具体的にはYAMLのテストなのですが、調べてみると、浮動小数点数
リテラルとYAMLの浮動小数点数のloadとで内部値が微妙に異なる値
になっていました。
# 浮動小数点数をassert_equalで見ようとすることの是非はさておき

つまり最近ruby_strtod()が変わって、YAML(というかsyck)はシステ
ムのstrtod()を使っていたから差が発生したのですが、そういうも
のということでいいのでしょうか。
YAML側をruby本体側に合わせるのは簡単(ext/syck/rubyext.cと
ext/syck/bytecode.cでutil.hをincludeすればいい)なのですが、ど
うもruby_strtod()が従来より精度が落ちているのではないかという
気がして、ちょっと気になっています。


おまけ
今現在の1.9と1.8との比較

C:\>ruby18 -ve "puts '%0.20f' % 0.288"
ruby 1.8.4 (2006-05-16) [i386-mswin32]
0.28800000000000003000

C:\>ruby -ve "puts '%0.20f' % 0.288"
ruby 1.9.0 (2006-05-15) [i386-mswin32]
0.28799999999999998000


それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>



In This Thread

Prev Next