[#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:42530] rational.so /Re: Float/String#to_r

From: Masaaki Sakano <mas@...>
Date: 2006-07-05 16:43:38 UTC
List: ruby-list #42530
坂野 正明です。

At Wed, 5 Jul 2006 12:29:30 +0900,
Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp> wrote:
> 現在、ruby-devで拡張ライブラリrational:
>   http://blade.nagaokaut.ac.jp/~sinara/ruby/rational/
> を、標準添付あるいは組み込みにしようと、調整を行っています。

おぉ、ついに! (すばらしい……)
# ruby-dev は最近読んでいなくて、全然存じませんでした!

最初に公開されたのが、[ruby-math:00902] 2003年7月だから、
3年ですか。石の上にも…? (^^)

> が、例えば[ruby-dev:28509]あたりで始まるスレッドで少し様子が
> わかると思います。

他、以下のスレッドが重要そうなところでしょうか(メモ代わり)。
[ruby-dev:28569] [ruby-dev:28744]

> というわけでrational.soに対するご意見をうかがえれば有り難い

ということですので、遠慮なく、以下、二、三、私見を書かせて頂きました。


> Float#to_rは違います。rational.soのFloat#to_rは、小数の内部
> 表現を有理数で表したもので、例えば、0.01.to_rは、
> 5764607523034235/576460752303423488のようになります。
> 
> さらにFloat#rationalizeというのも用意していて、例えば
> r = 0.01.rationalizeというのは、r.to_f == 0.01 となるような
> 有理数rのうちで、もっとも分子分母の小さくなるもの(1/100)です。

美しいですね。
ruby-dev の該当スレッドにざっと目を通したところ、Common Lisp の
命名を借りてらっしゃる、とのこと。なるほど、です。

[ruby-dev:28553]などの inspect に関しては、デバック中は(Rationalと
分かる)印が欲しい(現状?)、というのに賛成です。今の Ruby 標準だと、
a=2/3 は 0 になりますが、a=Rational(2,1)/3 は異なるので、内部的に
Integer かどうかは重要ですから。
# mathn 形式がRuby標準に持ってこられるなら、歓迎しますが (^^)

「Rational("1.1") → 11/10」の仕様は、賛成です。


一点、精度を(必要に応じて)落とすメソッドがあってもいいかも知れません。
rational が気に入られない理由のひとつに、速度をよく聞きます。たとえば、
 5764607523034235/576460752303423488 よりは、1/100 の方が、内部的な
計算速度は向上します。だから、
 5764607523034235/576460752303423488 → 1/100
にするようなメソッドがあってもいいかも知れません。
 r.precision(order=5)
など?
# order として、有効桁数を持ってくるか、小数点以下の有効桁数(お金の計算
# などではそうあるべき?)を持ってくるか、あるいはその両方サポートか、
# というのがひとつ問題として残りますか。

坂野 正明


In This Thread