[squeak-dev] 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 64-bit 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 Squeak-dev mailing list