前田です。 In message "[ruby-list:7041] Re: infinity" Kazuhisa YANAGAWA <katze / yuba.is.uec.ac.jp> wrote: |> >Float::INFINITY |> >Float::NaN | | どうせなら Numeric.... と思ったら Complex < Numeric だった. それじゃ | 実数で.... と思ったら実は ruby には実数の Bignum は無かった (^^; まあこの実装では内部表現がdoubleなので、Floatが妥当かなと思います。 | # 普通無いか. でもはじめて知った. Javaにあるのでちょっと悔しかったりしますが(^^; # JavaもINFINITYはDoubleで定義されているのですが。 |> そのようなC的な(?)方法もありますが, クラスを導入するのも1つの手かと思 |> います. | (略) |> または, 上記の数の大小関係(演算関係)を適当につけて, |> |> +0 * +∞ == +0 |> +∞ + -∞ == +0 |> 0 == +0 |> |> などとすればいらなくなるかな? 僕も最初大小関係だけ定義すれば十分かなという気もして、 class Infinity include Comparable private_class_method :new POSITIVE = new NEGATIVE = new def +@ return self end def between?(min, max) return false end class << POSITIVE def <=>(other) return 1 end def -@ return NEGATIVE end def coerce(other) return NEGATIVE, self end def to_s return "Inf" end alias inspect to_s end class << NEGATIVE def <=>(other) return -1 end def -@ return POSITIVE end def coerce(other) return POSITIVE, self end def to_s return "-Inf" end alias inspect to_s end end みたいなのを書いたんですけど、 | 一般に数値の話をするんだと.... どうなるんでしょうか? クラスが存在す | るのは便利そうですが. そもそも無限大/無限小との演算の意味を考えなく | ちゃならない. 足し算, 引き算, 掛け算はどうにでもなるとして, 割算です | か. まさかまじめに極限を計算するわけにもいくまいし. というように他の演算とかを考えたら、Cで書く方が楽だと思ってしまいました(^^; Floatだからcoerceとか面倒なことも考えなくてよいですよね。 -- 前田 修吾