diff --git a/src/printer.js b/src/printer.js index 32ba5f906..b07082afb 100644 --- a/src/printer.js +++ b/src/printer.js @@ -4302,6 +4302,8 @@ function printNumber(rawNumber) { .replace(/^([\d.]+)e[+-]?0+$/, "$1") // Make sure numbers always start with a digit. .replace(/^\./, "0.") + // Remove extraneous trailing decimal zeroes. + .replace(/(\.\d+?)0+(?=e|$)/, "$1") // Remove trailing dot. .replace(/\.(?=e|$)/, "") ); diff --git a/tests/literal/__snapshots__/jsfmt.spec.js.snap b/tests/literal/__snapshots__/jsfmt.spec.js.snap index 5a727503b..36e053605 100644 --- a/tests/literal/__snapshots__/jsfmt.spec.js.snap +++ b/tests/literal/__snapshots__/jsfmt.spec.js.snap @@ -65,6 +65,30 @@ function test5(): string { 0.5e+00 0.5e-0 0.5e-00 + +1 +1.00500 +1.0 +1.5 +1.50 +0 +0.00500 +0.0 +0.0000 +.0 +500600.001230045000 +1.00500e60 +1.0e60 +0.00500e60 +0.0e60 +0.0000e60 +.0e60 +0.e60 +0e60 +500600.001230045000e60 +10 +9700 +10e100 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // parentheses around numeric literal should be preserved function test5(): string { @@ -131,4 +155,28 @@ function test5(): string { 0.5; 0.5; +1; +1.005; +1.0; +1.5; +1.5; +0; +0.005; +0.0; +0.0; +0.0; +500600.001230045; +1.005e60; +1.0e60; +0.005e60; +0.0e60; +0.0e60; +0.0e60; +0e60; +0e60; +500600.001230045e60; +10; +9700; +10e100; + `; diff --git a/tests/literal/number.js b/tests/literal/number.js index d72d921df..c2b7ac2c3 100644 --- a/tests/literal/number.js +++ b/tests/literal/number.js @@ -62,3 +62,27 @@ function test5(): string { 0.5e+00 0.5e-0 0.5e-00 + +1 +1.00500 +1.0 +1.5 +1.50 +0 +0.00500 +0.0 +0.0000 +.0 +500600.001230045000 +1.00500e60 +1.0e60 +0.00500e60 +0.0e60 +0.0000e60 +.0e60 +0.e60 +0e60 +500600.001230045000e60 +10 +9700 +10e100