[squeak-dev] Float storage as Double?

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Mon Apr 26 19:27:45 UTC 2010


2010/4/26 Chris Muller <asqueaker at gmail.com>:
>> That's not true, every Float stores 64 bits.
>
> Hi Levente, it does?  Does that mean that (Float fromIEEE32Bit:
> myFloat asIEEE32BitWord) loses information?  What would be a more
> precise method of serialization then?
>

Float are 64 bits (double precision)
FloatArray use 32 bits (single precision)

Nicolas

>
>> 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