2011/4/8 Nicolas Cellier <[email protected]>:
> Once more, Floats are inexact.
>    0.01 ~= 0.01s2
> The name #absPrintExactlyOn:base: is lying, it does not print exactly,
> but it prints the shortest decimal representation than will be rounded
> to the same Float when read back.
>
> To print it exactly, you need to use #printShowingDecimalPlaces: indeed.
> As every finite Float is a represented internally as a Fraction with a
> denominator being a power of 2, every finite Float has a decimal
> representation with a finite number of decimals digits (just multiply
> numerator and denominator with adequate power of 5, and you'll get the
> digits).
>
> So try:
> 0.01 printShowingDecimalPlaces: 59
> -> 0.01000000000000000020816681711721685132943093776702880859375
>

Oh one thing I forgot, you wanna know how many digits you need after
decimal point to print exactly ?

Easy, (0.01 asTrueFraction denominator highBit - 1).

Nicolas

Reply via email to