floor() function returns the largest integer that is less than or equal to its argument.
In other words,
floor() rounds a non-whole number to the next smallest integer. When used on an integer, it will return that integer.
floor(4.2) /* Output: 4 */ 3.845.floor() /* Output: 3 */ floor(4) /* Output: 4 */
It’s worth noting that
floor() rounds “downward towards negative infinity”, while its counterpart, ceil, rounds “upward towards positive infinity”
When a negative value is passed as
floor()‘s argument, you’ll still get a smaller value.
floor(-3.7) /* Output: -4 */
floor() does not round “towards zero”, and ceil does not round “away from zero”.
Math.trunc(3.7) == 3 and
Math.trunc(-3.7) == -3.
Notion does not have a
trunc() function, but you can create one using an if-then statement:
/* Assume a number property exists called Num */ prop("Num") >= 0 ? prop("Num").floor() : prop("Num").ceil()
As stated above, Notion does not currently provide a
The example database below provides a working example of a
trunc() polyfill (a.k.a. custom code that replicates the functionality of a missing function), which uses both
floor() and ceil.
Floor and ceiling values are also provided for reference.
/* Written with ternary operator (? and :) */ prop("Num") >= 0 ? floor(prop("Num")) : ceil(prop("Num")) /* Written with if() */ if( prop("Num") >= 0, floor( prop("Num") ), ceil( prop("Num") ) )
trunc() function (which does not exist in Notion) would simply chop all of the digits after the decimal off of a number and return the integer.
To create an effective polyfill for this function, we must first determine if our input number is positive or negative. We do this with
prop("Num") >= 0, though the same could be accomplished with the sign function:
sign(prop("Num")) == 1
If the input number is positive, we pass it as an argument to
If it is negative, we must instead pass it as an argument to ceil.
You can check this in the example table above by comparing the output in the Trunc column to that of the Floor and Ceil columns.