From: Tadayoshi Funaba Date: 2009-06-11T22:39:04+09:00 Subject: [ruby-dev:38589] BigDecimal#to_i BigDecimal の修正の件で少し試していたのですが、to_i ってかなり遅くなる ことがあるようですね。 BigDecimal#split があらわす有理数から整数を求められるので、to_i が意味するのは概ね以下のようなものだと考えられます。 class BigDecimal def to_i2 if nan? || infinite? raise FloatDomainError end s, f, b, e = split (s * f.to_i * b ** (e - f.size)).to_i end end 1.9 でないとダメだと思いますし、BigDecimal について詳しくないので、なに か間違っているかもしれませんが、このほうが速いみたいで、 BigDecimal('12.345e678901') のような大きな数では効果的に見えます。