nearbyint, nearbyintf, nearbyintl
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Определено в заголовке
<math.h>
|
||
|
float
nearbyintf
(
float
arg
)
;
|
(1) | (начиная с C99) |
|
double
nearbyint
(
double
arg
)
;
|
(2) | (начиная с C99) |
|
long
double
nearbyintl
(
long
double
arg
)
;
|
(3) | (начиная с C99) |
|
Определено в заголовке
<tgmath.h>
|
||
|
#define nearbyint( arg )
|
(4) | (начиная с C99) |
nearbyintl
вызывается. В противном случае, если
arg
имеет целочисленный тип или тип
double
,
nearbyint
вызывается. В противном случае,
nearbyintf
вызывается, соответственно.
Содержание |
Параметры
| arg | - | значение с плавающей запятой |
Возвращаемое значение
Ближайшее целое значение к arg , в соответствии с текущим режимом округления , возвращается.
Обработка ошибок
Эта функция не подвержена ни одной из ошибок, указанных в
math_errhandling
.
Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559),
- FE_INEXACT никогда не возбуждается.
- Если arg равен ±∞, он возвращается без изменений.
- Если arg равен ±0, он возвращается без изменений.
- Если arg является NaN, возвращается NaN.
Примечания
Единственное различие между
nearbyint
и
rint
заключается в том, что
nearbyint
никогда не вызывает
FE_INEXACT
.
Наибольшие представимые значения с плавающей точкой являются точными целыми числами во всех стандартных форматах с плавающей точкой, поэтому
nearbyint
никогда не вызывает переполнения сам по себе; однако результат может переполнить любой целочисленный тип (включая
intmax_t
) при сохранении в целочисленной переменной.
Если текущий режим округления - FE_TONEAREST , эта функция округляет до чётного в пограничных случаях (как rint , но в отличие от round ).
Пример
#include <fenv.h> #include <math.h> #include <stdio.h> int main(void) { // #pragma STDC FENV_ACCESS ON fesetround(FE_TONEAREST); printf("округление к ближайшему:\nnearbyint(+2.3) = %+.1f ", nearbyint(2.3)); printf("nearbyint(+2.5) = %+.1f ", nearbyint(2.5)); printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5)); printf("nearbyint(-2.3) = %+.1f ", nearbyint(-2.3)); printf("nearbyint(-2.5) = %+.1f ", nearbyint(-2.5)); printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5)); fesetround(FE_DOWNWARD); printf("округление вниз: \nnearbyint(+2.3) = %+.1f ", nearbyint(2.3)); printf("nearbyint(+2.5) = %+.1f ", nearbyint(2.5)); printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5)); printf("nearbyint(-2.3) = %+.1f ", nearbyint(-2.3)); printf("nearbyint(-2.5) = %+.1f ", nearbyint(-2.5)); printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5)); printf("nearbyint(-0.0) = %+.1f\n", nearbyint(-0.0)); printf("nearbyint(-Inf) = %+.1f\n", nearbyint(-INFINITY)); }
Вывод:
округление к ближайшему: nearbyint(+2.3) = +2.0 nearbyint(+2.5) = +2.0 nearbyint(+3.5) = +4.0 nearbyint(-2.3) = -2.0 nearbyint(-2.5) = -2.0 nearbyint(-3.5) = -4.0 округление вниз: nearbyint(+2.3) = +2.0 nearbyint(+2.5) = +2.0 nearbyint(+3.5) = +3.0 nearbyint(-2.3) = -3.0 nearbyint(-2.5) = -3.0 nearbyint(-3.5) = -4.0 nearbyint(-0.0) = -0.0 nearbyint(-Inf) = -inf
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 7.12.9.3 Функции nearbyint (стр.: TBD)
-
- 7.25 Обобщённая математика <tgmath.h> (стр.: TBD)
-
- F.10.6.3 Функции nearbyint (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.12.9.3 Функции nearbyint (стр.: TBD)
-
- 7.25 Обобщённая математика <tgmath.h> (стр.: TBD)
-
- F.10.6.3 Функции nearbyint (стр.: TBD)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.12.9.3 Функции nearbyint (стр. 251-252)
-
- 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
-
- F.10.6.3 Функции nearbyint (стр. 526)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.12.9.3 Функции nearbyint (стр. 232)
-
- 7.22 Обобщенная математика <tgmath.h> (стр. 335-337)
-
- F.9.6.3 Функции nearbyint (стр. 463)
Смотрите также
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
округляет до целого числа, используя текущий режим округления, с
исключением, если результат отличается (функция) |
|
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
|
округляет до ближайшего целого числа, округляя от нуля в пограничных случаях
(функция) |
|
(C99)
(C99)
|
получает или устанавливает направление округления
(функция) |
|
C++ documentation
для
nearbyint
|
|