internal/number: enable the fast case more often

Change-Id: I0849b029eee7b233f4c6f676d7bbdde3820c63e4
Reviewed-on: https://go-review.googlesource.com/46470
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 eedc76f..f0a5777 100644
--- a/internal/number/decimal.go
+++ b/internal/number/decimal.go
@@ -347,7 +347,7 @@
 		return
 	}
 	// Simple case: decimal notation
-	if r.Scale > 0 || r.Increment > 0 && r.Scale == 0 {
+	if r.Scale > 0 || r.Increment > 0 || r.Precision == 0 {
 		if int(r.Scale) > len(scales) {
 			x *= math.Pow(10, float64(r.Scale))
 		} else {
@@ -372,6 +372,7 @@
 	// TODO: expose functionality in strconv so we can avoid this hack.
 	//   Something like this would work:
 	//   AppendDigits(dst []byte, x float64, base, size, prec int) (digits []byte, exp, accuracy int)
+	// TODO: This only supports the nearest even rounding mode.
 
 	prec := int(r.Precision)
 	if prec > 0 {