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) |
arg.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
См. также
|
(C99)(C99) | вычисляет наименьшее целое значение, не меньшее заданного (функция) |
|
(C99)(C99)(C99) | округляет до ближайшего целого, модуль которого не превышает модуль заданного значения (функция) |
|
(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