Spec-Zone.ru › C++

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)
1-3) Вычисляет наибольшее целое значение, не превосходящее 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⌋.

Возвращаемое значение
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

См. также

ceilceilfceill
(C++11)(C++11)
ближайшее целое число, не меньшее заданного значения
(функция)
trunctruncftruncl
(C++11)(C++11)(C++11)
ближайшее целое число, не превосходящее заданное значение по модулю
(функция)
roundroundfroundllroundlroundflroundlllroundllroundfllroundl
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API