std::floor, std::floorf, std::floorl
Определено в заголовке <cmath> |
||
|---|---|---|
| (1) | ||
float floor ( float num ); double floor ( double num ); long double floor ( long double num ); |
(до C++23) | |
constexpr /* floating-point-type */
floor ( /* floating-point-type */ num );
|
(с C++23) | |
float floorf( float num ); |
(2) | (с C++11) (constexpr с C++23) |
long double floorl( long double num ); |
(3) | (с C++11) (constexpr с C++23) |
| Дополнительные перегрузки (с C++11) | ||
Определено в заголовке <cmath> |
||
template< class Integer > double floor ( Integer num ); |
(A) | (constexpr с C++23) |
num. Библиотека предоставляет перегрузки std::floor для всех типов с плавающей точкой без квалификаторов cv в качестве типа параметра.(с C++23)
| A) Предоставляются дополнительные перегрузки для всех целочисленных типов, которые обрабатываются как double. | (с C++11) |
Параметры
| num | - | значение с плавающей точкой или целое значение |
Возвращаемое значение
Если ошибок не возникло, возвращается наибольшее целое значение, не большее num, то есть ⌊num⌋.
numОбработка ошибок
Ошибки сообщаются в соответствии со спецификацией math_errhandling.
Если реализация поддерживает IEEE арифметику с плавающей точкой (IEC 60559),
- Текущий режим округления не оказывает влияния.
- Если
numравно ±∞, оно возвращается без изменений. - Если
numравно ±0, оно возвращается без изменений. - Если
numравно NaN, возвращается NaN.
Примечания
FE_INEXACT может быть (но не обязательно) поднят при округление нецелого конечного значения.
Наибольшие представимые значения с плавающей точкой — это точные целые числа во всех стандартных форматах с плавающей точкой, поэтому эта функция никогда не переполняется сама по себе; однако результат может переполнить любой целочисленный тип (включая std::intmax_t), при хранении в целочисленной переменной.
Дополнительные перегрузки не обязаны быть предоставлены ровно как (A). Они должны быть достаточно обширными, чтобы обеспечить, что для своего аргумента num целого типа std::floor(num) имеет тот же эффект, что и std::floor(static_cast<double>(num)).
Пример
#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';
}Вывод:
floor(+2.7) = 2.000000 floor(-2.7) = -3.000000 floor(-0.0) = -0.000000 floor(-Inf) = -inf
См. также
|
(C++11)(C++11) |
ближайшее целое число, не меньшее заданного значения (функция) |
|
(C++11)(C++11)(C++11) |
ближайшее целое число, не большее по абсолютной величине, чем заданное значение (функция) |
|
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) |
ближайшее целое число, округляя в сторону от нуля в случаях с серединой (функция) |
C документация для floor |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/floor