std::floor, std::floorf, std::floorl
Определено в заголовочном файле <cmath> | ||
|---|---|---|
float floor ( float num ); double floor ( double num ); long double floor ( long double num ); | (1) | (до 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) |
| Перегрузка SIMD (начиная с C++26) | ||
Определено в заголовочном файле <simd> | ||
template< /*math-floating-point*/ V >
constexpr /*deduced-simd-t*/<V>
floor ( const V& v_num );
| (S) | (начиная с C++26) |
| Дополнительные перегрузки (начиная с C++11) | ||
Определено в заголовочном файле <cmath> | ||
template< class Integer > double floor ( Integer num ); | (A) | (constexpr начиная с C++23) |
num. Библиотека предоставляет перегрузки std::floor для всех типов с плавающей точкой без квалификаторов cv в качестве типа параметра.(начиная с C++23)
S) Перегрузка SIMD выполняет поэлементное std::floor для v_num. (Определения см. в math-floating-point и deduced-simd-t.) | (начиная с C++26) |
| A) Предоставляются дополнительные перегрузки для всех целочисленных типов, которые рассматриваются как double. | (начиная с C++11) |
Параметры
| 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/cpp/numeric/math/floor