internal/number: convert non-numbers to NaN

Change-Id: I378d586b72bd577aabee482372199902666dbccb
Reviewed-on: https://go-review.googlesource.com/58911
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
diff --git a/internal/number/decimal.go b/internal/number/decimal.go
index 443c69e..a66dc13 100644
--- a/internal/number/decimal.go
+++ b/internal/number/decimal.go
@@ -332,6 +332,8 @@
 	case uint64:
 		d.ConvertInt(r, unsigned, f)
 
+	default:
+		d.NaN = true
 		// TODO:
 		// case string: if produced by strconv, allows for easy arbitrary pos.
 		// case reflect.Value:
diff --git a/internal/number/decimal_test.go b/internal/number/decimal_test.go
index 7860459..b017b39 100644
--- a/internal/number/decimal_test.go
+++ b/internal/number/decimal_test.go
@@ -284,6 +284,7 @@
 		{math.Inf(1), inc50, "Inf"},
 		{math.Inf(-1), inc50, "-Inf"},
 		{math.NaN(), inc50, "NaN"},
+		{"clearly not a number", scale2, "NaN"},
 	}
 	for _, tc := range testCases {
 		var d Decimal