2010/4/26 Chris Muller asqueaker@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