Re: 0.06 == 0.06 returns false in Ruby?



On Sat, 01 Sep 2007 00:24:39 +0900, M. Edward (Ed) Borasky wrote:
Kyle Schmitt wrote:
On 8/30/07, doug meyer <doug.meyer@xxxxxxxxxx> 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.

You'd think some fixed point math libraries would help, but be careful,
because many of those _also_ store in twos compliment.

--Kyle


IIRC BigDecimal is in fact stored in (pregnant pause) Binary Coded
Decimal. But I should check that.

Neither one can represent 1/3 or sqrt(2) exactly.

--
Ken Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/
.