けいじゅ@日本ラショナルソフトウェアです. In [ruby-list :07055 ] the message: "[ruby-list:7055] Re: infinity ", on Mar/10 16:27(JST) Shugo Maeda writes: >前田です。 >|rubyでは定数としてはないんですが, 結果としてInfやNanになることがあるん >|ですね. ただ, 表記がおかしいんでどうにかして欲しいですが... >| >|例: >| >|rbc0> _**2 >|1.0e+168 >|rbc0> _**2 >|Inf.0 > >すでにRubyでInfやNaNが出てくるならFloatで定数定義されていても >よいかもしれませんね。 >(あくまでIEEEのInf/NaNを表現する定数という意味で) >BigFloatなどができた場合はどうするかという問題が残りますけど...。 そちらはきっとInfは存在しないはずです. NaNは... この場合は例外かな... # 何かおかしいなぁ.... やはり, 例外ベースの方がいいんだろうか... ># ちなみにinspectの表示がおかしいのは前のパッチで直ると思います。 あれれ. パッチ出ていたんですか(^^;;; メイルが多過ぎて全部読み切れてい ない... >あと、1.0 / 0.0 などは今までどうり例外を上げるか、あるいはInfを返す >か、どちらが良いでしょう。 うーん. どちらにしても1/0は例外ですからね... また悩み始めてしまった... rubyのInteger(Bignum/Fixnum)からみると例外ベースの方が良いと思えてきま した... そもそもInf/Nanになるということは例外的な状況ですので例外が発生した方 が良いような気がします. でも, そのような状態を変数に保存しておきたいこ ともあるのかなぁ? という気もしますし... 折衷案はどうでしょう? 計算した結果が, Inf/Nanになったら例外を発生させ る. ただし, Inf/Nanを表す定数も用意する. 状態を変数に保存したい時には以下のようにする. begin y = exp(bignumber) rescue PositiveInfError y = Float::PositiveInf rescue NegativeInfError y = Float::NegativeInf rescue NanError y = Float::Nan end うーん. 使いづらそう... # 例外が値を持てれば別なんですが... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju / rational.com <<---