Derek,
   The issue is an underlying one in how numbers are converted to exact 
fractions as part of the printing process; the problem needs to be addressed 
there since it will be affecting more than just printing.

Thomas

Derek Zhou writes:

> list:
>
> Previously in the list someone reported a bug in float printing:
>
> st> 1e-4
> 0.00001
>
> There is a bug in Float printing which I attached a patch. the variable
> allNines should really mean all nines except the last one, so if the
> last one round up, which  may not be 9 itself,  still can cause the
> whole digits round up and eat a leading zero in printing.
>
> Here is a patch to fix:
>
> diff --git a/kernel/Float.st b/kernel/Float.st
> index 3714f08..7e8e012 100644
> --- a/kernel/Float.st
> +++ b/kernel/Float.st
> @@ -527,10 +527,11 @@ if the hardware supports it.'>
>       allNines := true.
>          sameDown := true.
>          sameUp := true.
> +     digit := 9.
>
> -        [digit := num // weight.
> +        [allNines := allNines and: [digit = 9].
> +     digit := num // weight.
>          num := num \\ weight.
> -     allNines := allNines and: [digit = 9].
>          sameDown := sameDown and: [num >= eps].
>          sameUp := sameUp and: [num < (weight - eps)].
>       digits := digits * 10 + digit.
> _______________________________________________
> help-smalltalk mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/help-smalltalk


_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to