std::floor,...std::floorl(3)
πΈ std::floor, std::floorf, std::floorl π
okay so bestie, this is the <cmath> page for the floor family β <cmath> version, C++ Standard Library vibes. and honestly? it's giving "round down and slay." let's get into it β¨
π SYNOPSIS π
Defined in header <cmath>
float floor ( float num );
double floor ( double num ); (until C++23)
long double floor ( long double num );
constexpr /* floating-point-type */ (since C++23)
floor ( /* floating-point-type */ num );
float floorf( float num ); (1) (2) (since C++11)
(constexpr since C++23)
long double floorl( long double num ); (3) (since C++11)
(constexpr since C++23)
Additional overloads (since C++11):
Defined in header <cmath>
template< class Integer > (A) (constexpr since C++23)
double floor ( Integer num );
so like, what do these actually do π
1-3)Computes the largest integer value not greater thannum. that's it. that's the whole job. floor goes down π¦- Since C++23, the library provides overloads of
std::floorfor all cv-unqualified floating-point types as the type of the parameter. A)Additional overloads are provided for all integer types (since C++11), and those get treated asdouble.
π PARAMETERS π
numβ a floating-point or integer value. that's the input, bestie π«Ά
π RETURN VALUE π
If no errors occur, you get back the largest integer value not greater than num, which is to say βnumβ. periodt.
(the original page has a little picture here,math-floor.svg, showingnumon the number line. imagine a cute lil staircase. that's the vibe π)
π₯ ERROR HANDLING π₯
Errors are reported as specified in math_errhandling. (iykyk)
If the implementation supports IEEE floating-point arithmetic (IEC 60559), then:
- The current rounding mode has no effect. none. zero. it does not care π
- If
numis Β±β, it is returned, unmodified. - If
numis Β±0, it is returned, unmodified. - If
numis NaN, NaN is returned.
β¨ NOTES β¨
FE_INEXACTmay (but isn't required to) be raised when rounding a non-integer finite value.- The largest representable floating-point values are exact integers in all standard floating-point formats, so this function never overflows on its own π β however, the result may overflow any integer type (including
std::intmax_t) when stored in an integer variable. so like, watch out when you shove it into an int, no cap. - The additional overloads are not required to be provided exactly as
(A). They only need to be sufficient to ensure that for their argumentnumof integer type,std::floor(num)has the same effect asstd::floor(static_cast<double>(num)). same energy, different implementation, we love flexible queens π
π§ EXAMPLE π§
// Run this code
#include <cmath>
#include <iostream>
int main()
{
std::cout << std::fixed
<< "floor(+2.7) = " << std::floor(+2.7) << '\n'
<< "floor(-2.7) = " << std::floor(-2.7) << '\n'
<< "floor(-0.0) = " << std::floor(-0.0) << '\n'
<< "floor(-Inf) = " << std::floor(-INFINITY) << '\n';
}
Output:
floor(+2.7) = 2.000000
floor(-2.7) = -3.000000
floor(-0.0) = -0.000000
floor(-Inf) = -inf
see how -2.7 becomes -3.000000? floor goes down, always down, and -0.0 keeps its whole sign situation. iconic behavior honestly π
π¦ SEE ALSO π¦
ceil,ceilf,ceillβ nearest integer not less than the given value (function,C++11Γ2)trunc,truncf,trunclβ nearest integer not greater in magnitude than the given value (function,C++11)round,roundf,roundl,lround,lroundf,lroundl,llround,llroundf,llroundlβ nearest integer, rounding away from zero in halfway cases (function,C++11Γ9)- C documentation for
floorβ for the C girlies π
π and that's the whole page, bestie! this one's from http://cppreference.com, dated 2024.06.10, and it's part of the C++ Standard Library manual, section std::floor,...std::floorl(3). go forth and round down. slay β¨π
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms