From: Tadayoshi Funaba Date: 2008-02-15T22:46:32+09:00 Subject: [ruby-dev:33797] Re: rational, complex and mathn > Complex(1,2).numerator がエラーになります。rational を読んでいるとエラー > になりません。 今ごろ気がついたのですが、Integer#{numerator,denominator} だけじゃないですね。 Float#{numerator,denominator} も必要です。 $ ruby19 -r rational -r complex -e 'Complex(1.0,2.0).numerator' /usr/local/ruby19/lib/ruby/1.9.0/complex.rb:354:in `denominator': undefined method `denominator' for 1.0:Float (NoMethodError) from /usr/local/ruby19/lib/ruby/1.9.0/complex.rb:361:in `numerator' from -e:1:in `
' しかも、Float#{numerator,denominator} なんて何処にも定義されてないので、 rational を読んでも関係ありません。 素直に直そうとすると、結局 Float#to_r を定義することになるんじゃないか と思います。しかし、複素数の numerator、denominator を取るというのがよ くわからなくて、Common Lisp を始め、普通は複素数に対しては機能しないで すし、石塚さんに、意図を聞いたほうがいいですね。