From: Sato Hiroshi Date: 2006-07-05T10:37:48+09:00 Subject: [ruby-list:42513] Re: Float/String#to_r /Re: floatの値がずれる hirocyです. みなさま,いろいろな案ありがとうございます. FAQだったのですね...失礼いたしました. Rationalを使うというのは目から鱗でした. あと,NArrayも忘れてました...インストールしてるのに... 今後の参考にさせていただきます. 最後に,もう一つ思いついた方法があるので,書いておきます. [ruby-list:42505]で私が書いた, > ずっと加算し続けて丸め誤差がたまってしまった浮動小数点数を, > まだ誤差の少ない状態に戻す方法です.代入し直すようなイメージで. > つまり, > x = 0.001 + 0.001 > を, > x = 0.002 > と等価にする方法なのですが. についてですが, 一旦Stringにしてしまう,という荒技でもうまくいきました. x = [0.0] 100.times { x << x[-1].to_s.to_f + 0.001 } です.丸め誤差の貯蓄が1回の演算分にリセットされるようです. 根本的な解決ではないですが,(しかも数学的でもない...) 気軽に使えるかなと思いました. -- // hirocy