[squeakdev] Float storage as Double?
Levente Uzonyi
leves at elte.hu
Mon Apr 26 09:50:41 UTC 2010
On Mon, 26 Apr 2010, Lawson English wrote:
> I've been playing around with the Mandelbrot set and I noticed that the
> implementation using Float looked somewhat vague. After researching a while,
> it turns out (corrections welcome) that while Float performs 64bit FP
> calculations, only a limited number of decimal places are stored for
> subsequent calculations. Is there a way around this?
That's not true, every Float stores 64 bits. Just because some digits are
not shown in the printString, it doesn't mean they aren't there:
1.01 printString. "==> '1.01'"
1.01 printShowingDecimalPlaces: 60. "==> '1.010000000000000008881784197001252323389053344726562500000000'"
>
> I can work up a "fixed" point Complex number simply by writing over the
> internal ScaledDecimal representation using using z real: (z real) asString
> , but this is rather a lot of overhead and for precision less than 15ish
> decimal places, it would be nice to use hardware.
>
>
> Any relatively easy way to do this (store native precision floating point)?
It's done, see above.
>
> is there a faster way to truncate a ScaledDecimal than the above?
Sure, don't convert it to strings. :) I think you shouldn't use
ScaledDecimal at all, since it's just a combination of a fraction and
scale. You only need the fraction. Use #truncateTo: to truncate a number.
Levente
>
>
> Lawson
>
>
>
>
>
>
More information about the Squeakdev
mailing list
