refine precision limits on unsafe_math (#3589)
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user