From: "Sandor Szücs" Date: 2008-08-26T21:04:28+09:00 Subject: Re: BigDecimal with Float comparision bug. 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 --