From: Jason Roelofs Date: 2007-12-05T21:33:50+09:00 Subject: Re: what's wrong with these calculations? ------=_Part_1277_6241160.1196858028164 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On Dec 5, 2007 6:54 AM, hemant wrote: > On Dec 5, 2007 5:22 PM, hemant wrote: > > On Dec 5, 2007 5:00 PM, Ivo Dancet wrote: > > > Hi > > > > > > I thought, why search for two hours being totally frustrated if I can > > > just ask... > > > > > > why does this happen: > > > > > > >> 73.07-63.00 > > > => 10.07 # ok, normal! > > > >> 73.07-64.00 > > > => 9.06999999999999 # why oh why? > > > > Thats folly of floats, you can't do much apart from : > > > > sprintf("%.2f",(73.07-64.00)).to_f > > > > generally, I add a method to Float class like this: > > class Float > def r2p places > sprintf("%.#{places}f",self).to_f > end > end > > Also look into using the BigDecimal class. It does special processing to keep floating point precision. Jason ------=_Part_1277_6241160.1196858028164--