[#20036] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

16 messages 2003/04/18
[#20045] Re: Roundoff problem with Float and Marshal — nobu.nakada@... 2003/04/20

なかだです。

[#20063] Re: Roundoff problem with Float and Marshal — matz@... (Yukihiro Matsumoto) 2003/04/22

まつもと ゆきひろです

[#20097] jcode.rb — akira yamada / やまだあきら <akira@...>

25 messages 2003/04/26
[#20098] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/27

まつもと ゆきひろです

[#20105] Re: jcode.rb — WATANABE Hirofumi <eban@...> 2003/04/28

わたなべです。

[#20108] Re: jcode.rb — matz@... (Yukihiro Matsumoto) 2003/04/28

まつもと ゆきひろです

[ruby-dev:20066] Re: Roundoff problem with Float and Marshal

From: matz@... (Yukihiro Matsumoto)
Date: 2003-04-23 07:52:03 UTC
List: ruby-dev #20066
まつもと ゆきひろです

In message "[ruby-dev:20065] Re: Roundoff problem with Float and Marshal"
    on 03/04/23, nobu.nakada@nifty.ne.jp <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行もある
巨大な関数なんですが。

                                まつもと ゆきひろ /:|)

In This Thread