[#42503] floatの値がずれる — Sato Hiroshi <hirocy.f01@...>

hirocyと申します.

33 messages 2006/07/04
[#42504] Re: floatの値がずれる — rubikitch <rubikitch@...> 2006/07/04

From: Sato Hiroshi <hirocy.f01@plala.to>

[#42505] Re: floatの値がずれる — Sato Hiroshi <hirocy.f01@...> 2006/07/04

hirocyです.るびきちさん,ありがとうございます.

[#42569] JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Takahiro Kambe <taca@...>

こんばんは。

19 messages 2006/07/11
[#42570] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[#42572] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Takahiro Kambe <taca@...> 2006/07/11

In message <1152619872.835566.21152.nullmailer@x31.priv.netlab.jp>

[#42575] Re: JVN、スクリプト言語「Ruby」の2件の脆弱性情報を公表 — Yukihiro Matsumoto <matz@...> 2006/07/11

まつもと ゆきひろです

[ruby-list:42513] Re: Float/String#to_r /Re: floatの値がずれる

From: Sato Hiroshi <hirocy.f01@...>
Date: 2006-07-05 01:37:48 UTC
List: ruby-list #42513
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

In This Thread