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 имеет тип longdouble, вызывается floorl. В противном случае, если arg имеет целочисленный тип или тип double, вызывается floor. В противном случае вызывается floorf.

Параметры

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

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

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

Возвращаемое значение
Аргумент

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

Об ошибках сообщается согласно спецификации 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

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
    • 7.12.9.2 Функции floor (стр.: уточняется)
    • 7.25 Обобщённые по типу математические функции <tgmath.h> (стр.: уточняется)
    • F.10.6.2 Функции floor (стр.: уточняется)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.12.9.2 Функции floor (стр.: уточняется)
    • 7.25 Обобщённые по типу математические функции <tgmath.h> (стр.: уточняется)
    • F.10.6.2 Функции floor (стр.: уточняется)
  • Стандарт 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/c/numeric/math/floor

Spec-Zone.ru

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