diff --git a/common.go b/common.go index 39f3ba977..6acb7d920 100644 --- a/common.go +++ b/common.go @@ -385,7 +385,7 @@ func Number(num []byte, prec int) []byte { num[end] = '0' end++ } - } else if normExp < -3 && lenNormExp < lenIntExp { + } else if normExp < -3 && lenNormExp < lenIntExp && dot < end { // case 2: print normalized number (0.1 <= f < 1) zeroes := -normExp + origExp if 0 < zeroes { diff --git a/common_test.go b/common_test.go index ae429fa0d..355db52e5 100644 --- a/common_test.go +++ b/common_test.go @@ -165,7 +165,12 @@ func TestNumber(t *testing.T) { {"0.001", ".001"}, {"0.0001", "1e-4"}, {"100e1", "1e3"}, + {"1e10", "1e10"}, + {"1e-10", "1e-10"}, + {"1000e-7", "1e-4"}, + {"1000e-6", ".001"}, {"1.1e+1", "11"}, + {"1.1e-1", ".11"}, {"1.1e6", "11e5"}, {"1.1e", "1.1e"}, // broken number, don't parse {"1.1e+", "1.1e+"}, // broken number, don't parse diff --git a/js/js_test.go b/js/js_test.go index f9bf1c38f..5a5a61011 100644 --- a/js/js_test.go +++ b/js/js_test.go @@ -26,6 +26,8 @@ func TestJS(t *testing.T) { {`"use strict"`, `"use strict"`}, {`1.0`, `1`}, {`1000`, `1e3`}, + {`1e10`, `1e10`}, + {`1e-10`, `1e-10`}, {`0b1001`, `9`}, {`0o11`, `9`}, {`0x0D`, `13`},