1e-4 printing bug

Derek Zhou <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.gnu.general
Message-ID <[email protected]>
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:

_______________________________________________
help-smalltalk mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
allNines.patch (text/x-diff, 580 B)
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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.