From: matz@... (Yukihiro Matsumoto) Date: 2003-04-23T16:52:03+09:00 Subject: [ruby-dev:20066] Re: Roundoff problem with Float and Marshal まつもと ゆきひろです In message "[ruby-dev:20065] Re: Roundoff problem with Float and Marshal" on 03/04/23, nobu.nakada@nifty.ne.jp writes: |> 確かにglibcのstrtodを使うとrubyが使っているものよりも正確な |> 値を出します。これは内部的にMPを使って精度を稼いでいるようで |> す。速度は重要ではないので、Bignumを使えば良いってことなのか |> なあ。 | |Bignum#to_fも誤差を含んでるようです。 |$ ruby -e 'p 39560152763386141.to_f' |3.9560152763386144e+16 単純にかけ算すると誤差が累積するんでしょうね。これってどうや ると誤差が減らせるんですかねえ。 |10進小数を2進で正確に表現できないのはしょうがないので、どう丸め |るかという話になるわけですが、それがexponentによって変わってし |まうというのが問題ではないかと。 いや、まあ、その通りなんですが、glibcのstrtodよりも明らかに 負けているのはなんか悔しいかも。もっとも向こうは1600行もある 巨大な関数なんですが。 まつもと ゆきひろ /:|)