about summary refs log tree commit diff stats
path: root/412print-float-decimal.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-11-29 13:26:48 -0800
committerKartik Agaram <vc@akkartik.com>2020-11-29 13:26:48 -0800
commit55dfa5b98530bdeae19f5e1f118634d9c774773f (patch)
tree2f9b18b57f2d383571cafb13639f0ac0efeffc2a /412print-float-decimal.mu
parente1eadf67bb328b560e6e8ddf8edbedb63bfe5973 (diff)
downloadmu-55dfa5b98530bdeae19f5e1f118634d9c774773f.tar.gz
7305 - make float-size more consistent as well
Diffstat (limited to '412print-float-decimal.mu')
-rw-r--r--412print-float-decimal.mu19
1 files changed, 15 insertions, 4 deletions
diff --git a/412print-float-decimal.mu b/412print-float-decimal.mu
index 00514f21..afd73d45 100644
--- a/412print-float-decimal.mu
+++ b/412print-float-decimal.mu
@@ -595,18 +595,29 @@ fn float-size in: float, precision: int -> _/eax: int {
     return 8  # hacky for scientific notation
   }
 
-  var result/eax: int <- copy n
+  # result = min(n, dp+3)
+  var result/ecx: int <- copy dp
+  result <- add 3
+  {
+    compare result, n
+    break-if-<=
+    result <- copy n
+  }
+
+  # account for decimal point
+  compare dp, n
   {
-    compare result, dp
     break-if->=
-    result <- copy dp
+    result <- increment
   }
+
+  # account for sign
   var sign/edx: int <- reinterpret in
   sign <- shift-right 0x1f
   {
     compare sign, 1
     break-if-!=
-    result <- increment  # for "-"
+    result <- increment
   }
   return result
 }