]> Cypherpunks repositories - gostls13.git/commitdiff
math/big: simplified formatting logic
authorRobert Griesemer <gri@golang.org>
Wed, 4 Feb 2015 23:16:45 +0000 (15:16 -0800)
committerRobert Griesemer <gri@golang.org>
Thu, 5 Feb 2015 22:19:42 +0000 (22:19 +0000)
Change-Id: I4329c44b829fcd77e4f1a1d45904f0f8a280a595
Reviewed-on: https://go-review.googlesource.com/3940
Reviewed-by: Alan Donovan <adonovan@google.com>
src/math/big/ftoa.go

index 5eb0dbdd5339f81426dce14f1ae88321cf51bf59..148081589d06b5cccaeade49bcfa2a16154bd36f 100644 (file)
@@ -111,9 +111,8 @@ func fmtE(buf []byte, fmt byte, prec int, neg bool, d decimal) []byte {
        // .moredigits
        if prec > 0 {
                buf = append(buf, '.')
-               // TODO(gri) clean up logic below
                i := 1
-               m := len(d.mant) + prec + 1 - max(len(d.mant), prec+1)
+               m := min(len(d.mant), prec+1)
                if i < m {
                        buf = append(buf, d.mant[i:m]...)
                        i = m
@@ -151,14 +150,11 @@ func fmtF(buf []byte, prec int, neg bool, d decimal) []byte {
                buf = append(buf, '-')
        }
 
-       // integer, padded with zeros as needed.
+       // integer, padded with zeros as needed
        if d.exp > 0 {
-               // TODO(gri) fuse loops below and/or cleanup
-               var i int
-               for i = 0; i < int(d.exp) && i < len(d.mant); i++ {
-                       buf = append(buf, d.mant[i])
-               }
-               for ; i < d.exp; i++ {
+               m := min(len(d.mant), d.exp)
+               buf = append(buf, d.mant[:m]...)
+               for ; m < d.exp; m++ {
                        buf = append(buf, '0')
                }
        } else {
@@ -179,3 +175,10 @@ func fmtF(buf []byte, prec int, neg bool, d decimal) []byte {
 
        return buf
 }
+
+func min(x, y int) int {
+       if x < y {
+               return x
+       }
+       return y
+}