From: "U.Nakamura" Date: 2006-05-16T18:41:38+09:00 Subject: [ruby-dev:28644] ruby_strtodの精度 こんにちは、なかむら(う)です。 久し振りに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