LibM: Fix floor() and floorf() for negative numbers
And add a LibJS test to exercise the code. :^)
This commit is contained in:
parent
8f293b7543
commit
de7827faf7
Notes:
sideshowbarker
2024-07-19 06:37:48 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/de7827faf7d
2 changed files with 27 additions and 2 deletions
Libraries
19
Libraries/LibJS/Tests/Math.floor.js
Normal file
19
Libraries/LibJS/Tests/Math.floor.js
Normal file
|
@ -0,0 +1,19 @@
|
|||
load("test-common.js");
|
||||
|
||||
try {
|
||||
assert(Math.floor(0.95) === 0);
|
||||
assert(Math.floor(4) === 4);
|
||||
assert(Math.floor(7.004) == 7);
|
||||
assert(Math.floor(-0.95) === -1);
|
||||
assert(Math.floor(-4) === -4);
|
||||
assert(Math.floor(-7.004) === -8);
|
||||
|
||||
assert(isNaN(Math.floor()));
|
||||
assert(isNaN(Math.floor(NaN)));
|
||||
|
||||
assert(Math.floor.length === 1);
|
||||
|
||||
console.log("PASS");
|
||||
} catch (e) {
|
||||
console.log("FAIL: " + e);
|
||||
}
|
|
@ -412,12 +412,18 @@ float roundf(float value)
|
|||
|
||||
float floorf(float value)
|
||||
{
|
||||
return (int)value;
|
||||
if (value >= 0)
|
||||
return (int)value;
|
||||
int intvalue = (int)value;
|
||||
return ((float)intvalue == value) ? intvalue : intvalue - 1;
|
||||
}
|
||||
|
||||
double floor(double value)
|
||||
{
|
||||
return (int)value;
|
||||
if (value >= 0)
|
||||
return (int)value;
|
||||
int intvalue = (int)value;
|
||||
return ((double)intvalue == value) ? intvalue : intvalue - 1;
|
||||
}
|
||||
|
||||
double rint(double value)
|
||||
|
|
Loading…
Add table
Reference in a new issue