2006年7月 5日

[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

投稿者 xml-rpc : 2006年7月 5日 10:37
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/42440
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。