Spec-Zone.ru › C++

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)
1-3) Вычисляет наибольшее целое значение, не большее num. Библиотека предоставляет перегрузки std::floor для всех типов с плавающей точкой без квалификаторов cv в качестве типа параметра.(с C++23)
A) Предоставляются дополнительные перегрузки для всех целочисленных типов, которые обрабатываются как double. (с C++11)

Параметры

num - значение с плавающей точкой или целое значение

Возвращаемое значение

Если ошибок не возникло, возвращается наибольшее целое значение, не большее num, то есть ⌊num⌋.

Возвращаемое значение
math-floor.svg
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/w/cpp/numeric/math/floor

Spec-Zone.ru

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