On Tue, May 20, 2014 at 1:45 PM, Sean P. DeNigris <[email protected]>wrote:

> Maximiliano Taborda wrote
> > Seeing the same with aconcagua
> > ...
> >  teaspoons := BaseUnit named: 'teaspoons'.
> >  aHalfTeaspoon := Measure amount: 1/2 unit: teaspoons.
> >  anotherHalfTeaspoon := Measure amount: 0.5 unit: teaspoons.
> >
> > "#hash"
> >  aHalfTeaspoon hash = anotherHalfTeaspoon hash "this evaluate to true"
> >
> > So, I don't see where is the bug.
>
> It seems to only appear when comparing measures with derived units...
>
> baseUnit := BaseUnit named: 'tablespoon'.
> unit := ProportionalDerivedUnit baseUnit: baseUnit conversionFactor: 1/3
> named: 'teaspoon'.
> m1 := Measure amount: 1/2 unit: unit.
> m2 := Measure amount: 0.5 unit: unit.
> m1 hash = m2 hash. "this evaluate to false"
>


are you surprised?

0.5 * 0.5 = (1/2 * (1/2)) true
0.5 / 3 = (1/2 * (1/3)) false

You can't divide floats by 3 and get an exact answer:

0.5 / 3 = 0.16666666666666666

(1/2)/3 = (1/6)


>
>
> -----
> Cheers,
> Sean
> --
> View this message in context:
> http://forum.world.st/Aconcagua-Hashing-Bug-tp4759622p4759745.html
> Sent from the Pharo Smalltalk Developers mailing list archive at
> Nabble.com.
>
>


-- 
best,
Eliot

Reply via email to