From: Masaaki Sakano Date: 2002-12-06T19:57:38+09:00 Subject: [ruby-list:36706] Re: 1.1 < 61.1 - 60.0 坂野 正明です。 At Fri, 6 Dec 2002 19:41:46 +0900, wrote: > >> そうですよね。リテラル自体に誤差があると考えないといけない。 > > > >[ruby-list:35966] にある、 > > Float::to_r > >はいかがですか? > >Float を必要な精度で Rational に変換するメソッド。 > > やはり計算途中の丸め誤差とリテラルの問題は分けて考えなければ > いけませんね。to_r は前者には有効ですが、後者には無力です。 厳密な意味ではおっしゃる通りですが、実用上は、to_r で、リテラルの 問題もクリアできると思います。 リテラルというからには、データファイルなり、キー入力なり、どこかに 実際に数字が書き下されているわけで、必要な有効桁数は予想できるはずです。 ならば、その有効桁数(にちょっと余裕を持たせたくらいで)をもって、読み 込んだ数値を片っ端から to_r に通すようにすればよろしいんではないかと。 # もちろん、Float の有効桁数に達するくらいの精度を要求する場合は # 話は別ですが。 坂野 正明