LibJS: Improve correctness of rounding and bitwise operations

Patch from Anonymous
This commit is contained in:
Andreas Kling 2021-02-05 09:11:58 +01:00
commit 16a0e7a66d
Notes: sideshowbarker 2024-07-18 22:35:07 +09:00
9 changed files with 106 additions and 19 deletions

View file

@ -154,7 +154,16 @@ JS_DEFINE_NATIVE_FUNCTION(MathObject::round)
return {};
if (number.is_nan())
return js_nan();
return Value(::round(number.as_double()));
double intpart = 0;
double frac = modf(number.as_double(), &intpart);
if (intpart >= 0) {
if (frac >= 0.5)
intpart += 1.0;
} else {
if (frac < -0.5)
intpart -= 1.0;
}
return Value(intpart);
}
JS_DEFINE_NATIVE_FUNCTION(MathObject::max)