Spec-Zone.ru › C

floor, floorf, floorl

Определено в заголовке <math.h>
float       floorf( float arg );
(1) (с C99)
double      floor( double arg );
(2)
long double floorl( long double arg );
(3) (с C99)
Определено в заголовке <tgmath.h>
#define floor( arg )
(4) (с C99)
1-3) Вычисляет наибольшее целое значение, не большее чем arg.
4) Универсальный макрос для типов: Если arg имеет тип long double, вызывается floorl. В противном случае, если arg имеет целочисленный тип или тип double, вызывается floor. В противном случае вызывается floorf.

Параметры

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

Значение результата

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

Значение результата
math-floor.svg
Аргумент

Обработка ошибок

Ошибки сообщаются в соответствии со спецификацией в math_errhandling.

Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559),

  • Текущий режим округления не имеет эффекта.
  • Если arg равно ±∞, оно возвращается без изменений.
  • Если arg равно ±0, оно возвращается без изменений.
  • Если arg равно NaN, возвращается NaN.

Примечания

FE_INEXACT может быть (но не обязательно) сгенерировано при округленнии нецелого конечного значения.

Наибольшие представимые значения с плавающей точкой являются точными целыми числами во всех стандартных форматах с плавающей точкой, поэтому данная функция никогда не переполняется сама по себе; однако результат может переполнить любой целочисленный тип (включая intmax_t), когда он хранится в целочисленной переменной.

Пример

#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("floor(+2.7) = %+.1f\n", floor(2.7));
    printf("floor(-2.7) = %+.1f\n", floor(-2.7));
    printf("floor(-0.0) = %+.1f\n", floor(-0.0));
    printf("floor(-Inf) = %+f\n",   floor(-INFINITY));
}

Возможный вывод:

floor(+2.7) = +2.0
floor(-2.7) = -3.0
floor(-0.0) = -0.0
floor(-Inf) = -inf

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.12.9.2 Функции floor (с. 251)
    • 7.25 Универсальная математика <tgmath.h> (с. 373-375)
    • F.10.6.2 Функции floor (с. 526)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.12.9.2 Функции floor (с. 232)
    • 7.22 Универсальная математика <tgmath.h> (с. 335-337)
    • F.9.6.2 Функции floor (с. 463)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.5.6.3 Функция floor

См. также

ceilceilfceill
(C99)(C99)
вычисляет наименьшее целое, не меньшее данного значения
(функция)
trunctruncftruncl
(C99)(C99)(C99)
округляет до ближайшего целого, не превосходящего по модулю данного значения
(функция)
roundroundfroundllroundlroundflroundlllroundllroundfllroundl
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
округляет до ближайшего целого, округляя в сторону от нуля в случаях с половиной
(функция)
Документация C++ для floor

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/floor

Spec-Zone.ru

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