[#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:42516] Re: Float/String#to_r /Re: float の値がずれる

From: Shin-ichiro HARA <sinara@...>
Date: 2006-07-05 03:29:30 UTC
List: ruby-list #42516
原です。

>坂野 正明です。

>Float#to_r は、昔、僕が投稿しました。
> [ruby-list:35966]
> http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/35966
>でも、当時は 1.6 対応だったので、Ruby 1.8 対応にしたものを、
>以下に添付します。String#to_r も含んでいます。

現在、ruby-devで拡張ライブラリrational:

  http://blade.nagaokaut.ac.jp/~sinara/ruby/rational/

を、標準添付あるいは組み込みにしようと、調整を行っています。

ruby-devをrationalで検索すると、佃煮にするぐらいヒットします
が、例えば[ruby-dev:28509]あたりで始まるスレッドで少し様子が
わかると思います。

#ruby-1.8.5 に導入を目指していたんですが、間に合わないかな。

ところで、rational.so(このライブラリを仮にこう呼ぶ)では、
String#to_r、Float#to_r、(新)Rational#to_f などが実装されて
います。

String#to_rは坂野さんの[ruby-list:42510]と殆ど同じですが、
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:28566])はやや複雑ですが、精度をいっぱ
いにるので、to_r_sakano(坂野さんのto_r)より若干正確になりま
す。

  100000000000000.1.to_r_sakano #=> 100000000000000/1
  100000000000000.1.rationalize #=> 1000000000000001/10

もっともポリシーが違うので比較するのも何ですが。

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


In This Thread