From: Nobuyoshi Nakada Date: 2007-05-02T12:35:33+09:00 Subject: [ruby-dev:30748] Re: 大きな数の大まかな割り算 なかだです。 At Wed, 2 May 2007 11:11:47 +0900, 石塚圭樹 wrote in [ruby-dev:30746]: > class Rational > def to_f > m = Float.prec_size > e = m - abs.log2floor > Math.ldexp((self * 2**e).floor.to_f,-e) > end > end prec_sizeはFloat::MANT_DIGでいいのではないかと思いますが、 irb(main):017:0> (((522 / 100 / 365) + 1) ** 365).to_f NoMethodError: undefined method `log2floor' for # from (irb):4:in `to_f' from (irb):17 とエラーになりました。 それと、Rational#floorはないみたいなので、(self * 2**e).floor でやはりオーバーフローしそうな気がするのですが。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦