From: Yukihiro Matsumoto Date: 2008-02-12T11:04:27+09:00 Subject: [ruby-dev:33706] Re: rational, complex and mathn まつもと ゆきひろです In message "Re: [ruby-dev:33662] rational, complex and mathn" on Sat, 9 Feb 2008 08:06:02 +0900, Tadayoshi Funaba writes: | |rational は floor、truncate、ceil、round を定義していません。Numeric |のまま提供しています。しかし、Numeric のものは、浮動小数点数に変換して |しまうためまともな結果が得られるとは限りません。[ruby-dev:32201] | |現状、floor のかわりに to_i をつかって問題がないのは、to_i の定義が |floor になっているからです。Float#to_i の定義から、Numeric の to_i は |truncate であるべきだと思います。 | |Complex(1,2).numerator がエラーになります。rational を読んでいるとエラー |になりません。 | |$ ruby19 -r complex -e 'Complex(1,2).numerator' |/usr/local/ruby19/lib/ruby/1.9.0/complex.rb:345:in `denominator': undefined method `denominator' for 1:Fixnum (NoMethodError) | from /usr/local/ruby19/lib/ruby/1.9.0/complex.rb:352:in `numerator' | from -e:1:in `
' | |Complex#quo が機能しません。普通に整数割りしてしまいます。 | |$ ruby19 -r complex -e 'p Complex(1,2).quo(2)' |Complex(0, 1) | |$ ruby19 -r complex -r rational -e 'p Complex(1,2).quo(2)' |Complex(0, 1) | |complex では、不要に思えるメソッドが放置してあります。>、>=、<、<=、 |between?、floor、ceil、round、truncate など。1.8 では、step、<=> も。 |あと、% は意味があるのでしょうか。 | |mathn で、Rational#inspect を書き換えているが、さすがに余計なお世話の |ような気もします。どうしてもしたければ、そういうことは、irb などアプリ |ケーション側でやればいいような気がします。 | |以下修正案。floor、ceil、truncate、round は原さんの rational からパク |りました。 どうもメンテナーの反応が悪いので、trunkにコミットしてください。 不満があれば石塚さん自身にrevertしてもらいましょう。