diff --git a/decimal.go b/decimal.go index 134ece2..1ea3061 100644 --- a/decimal.go +++ b/decimal.go @@ -130,6 +130,9 @@ func NewFromString(value string) (Decimal, error) { // strip the insignificant digits for more accurate comparisons. decimalPart := strings.TrimRight(parts[1], "0") intString = parts[0] + decimalPart + if intString == "" && parts[1] != "" { + intString = "0" + } expInt := -len(decimalPart) exp += int64(expInt) } else { diff --git a/decimal_test.go b/decimal_test.go index 64f0552..395357f 100644 --- a/decimal_test.go +++ b/decimal_test.go @@ -70,6 +70,8 @@ var testTableScientificNotation = map[string]string{ "1.2345E-1": "0.12345", "0e5": "0", "0e-5": "0", + "0.e0": "0", + ".0e0": "0", "123.456e0": "123.456", "123.456e2": "12345.6", "123.456e10": "1234560000000",