From: Kyle Schmitt Date: 2007-09-02T05:33:17+09:00 Subject: Re: 0.06 == 0.06 returns false in Ruby? On 8/31/07, Logan Capaldo wrote: > On 8/31/07, Kyle Schmitt wrote: > > On 8/30/07, doug meyer wrote: > > > There is also a class called BigDecimal (or something like that) if > > > you want to have really accurate numbers and no floating-point errors. > > > > A warning on things like BigDecimal. > > Unless I'm mistaken it's still stored in twos compliment, which means > > you'll still end up with the same sort of floating point problems > > (albeit further down), and the same numbers that you can't express > > exactly with a normal float, can't be expressed exactly with a > > BigDecimal. > > > Um, 2's compliment is not a cause of floating point error. IEEE > floating point numbers do not use two's complement, they have a sign > bit. Two's complement is just a way of encoding the sign of a value. Used the wrong term :P sue me. I guess that's why I should lookup stuff before responding ;) Anyway it's all based on the fact that you can't store some numbers exactly as sum of different xes for 2**(-x). --Kyle