internal/number: increase the max integer digits This allows int64s to convert without allocation. Change-Id: I6f1f95cb7cf72384ce9d420e05a077e378ebd7ad Reviewed-on: https://go-review.googlesource.com/46156 Run-TryBot: Marcel van Lohuizen <mpvl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/internal/number/decimal.go b/internal/number/decimal.go index 4e42ec7..a323ae7 100644 --- a/internal/number/decimal.go +++ b/internal/number/decimal.go
@@ -34,6 +34,8 @@ Scale int32 // maximum number of decimals after the dot. } +const maxIntDigits = 20 + // A Decimal represents floating point number represented in digits of the base // in which a number is to be displayed. Digits represents a number [0, 1.0), // and the absolute value represented by Decimal is Digits * 10^Exp. @@ -53,7 +55,7 @@ Inf bool // Takes precedence over Digits and Exp. NaN bool // Takes precedence over Inf. - buf [10]byte + buf [maxIntDigits]byte } // normalize retuns a new Decimal with leading and trailing zeros removed. @@ -401,11 +403,10 @@ } func (d *Decimal) fillIntDigits(x uint64) { - const maxUintDigits = 10 - if cap(d.Digits) < maxUintDigits { + if cap(d.Digits) < maxIntDigits { d.Digits = d.buf[:] } else { - d.Digits = d.buf[:maxUintDigits] + d.Digits = d.buf[:maxIntDigits] } i := 0 for ; x > 0; x /= 10 {