diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2019-11-17 01:16:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-17 01:16:42 +0800 |
commit | d1b2ecec27ea17e42d504503c6d760ff3c67b9ad (patch) | |
tree | d83a95a4721336282be5d24b6d06c80fbaa9d5c6 | |
parent | 552be61c4d6756fb31675fee0b1284e23d5d8721 (diff) | |
download | tracifyjs-d1b2ecec27ea17e42d504503c6d760ff3c67b9ad.tar.gz tracifyjs-d1b2ecec27ea17e42d504503c6d760ff3c67b9ad.zip |
refine precision limits on `unsafe_math` (#3589)
-rw-r--r-- | lib/compress.js | 3 | ||||
-rw-r--r-- | test/compress/numbers.js | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/compress.js b/lib/compress.js index f82a165e..9366091c 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -2953,7 +2953,8 @@ merge(Compressor.prototype, { && typeof result == "number" && (this.operator == "+" || this.operator == "-")) { var digits = Math.max(0, decimals(left), decimals(right)); - if (digits < 21) return +result.toFixed(digits); + // 53-bit significand => 15.95 decimal places + if (digits < 16) return +result.toFixed(digits); } return result; diff --git a/test/compress/numbers.js b/test/compress/numbers.js index cbb2863f..ee20fc15 100644 --- a/test/compress/numbers.js +++ b/test/compress/numbers.js @@ -917,3 +917,17 @@ issue_3547_4: { "number 0", ] } + +unsafe_math_rounding: { + options = { + evaluate: true, + unsafe_math: true, + } + input: { + console.log(4 / -3 + 1 === 1 / -3); + } + expect: { + console.log(false); + } + expect_stdout: "false" +} |