From: bbiker Date: 2008-08-28T08:25:29+09:00 Subject: Re: BigDecimal with Float comparision bug. On Aug 26, 8:04 am, Sandor Szücs wrote: > On 26.08.2008, at 13:09, Maciej Tomaka wrote: > > > > > > > Float: > >>>BigDecimal.new("25.0") == 25.0 > > => false > > Decimal: > > >>>BigDecimal.new("25.0") == 25 > > => true > > >>> (1..1000).select { |d|BigDecimal.new("#{d}.0") != d.to_f }.size > > => 414 > > > So 41.4% such comparisions are false!!! > > > What do you think about it? > > Maybe it is a plattform or version issue. > > On ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin8] it works as you > expected. > > irb> require 'bigdecimal' > => true > irb>BigDecimal.new("25.0") > => # > irb>BigDecimal.new("25.0").to_f > => 25.0 > irb>BigDecimal.new("25.0") == 25 > => true > irb>BigDecimal.new("25.0") == 25.0 > => true > irb> (1..1000).select { |d|BigDecimal.new("#{d}.0") != d.to_f }.size > => 0 > > regards, Sandor Szücs > -- Works for me irb(main):002:0> require 'bigdecimal' => true irb(main):003:0> (1..1000).select { |d| BigDecimal.new("#{d}.0") != d.to_f }.size => 0 renard$ ruby -v ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-darwin9.4.0]