Namespaces
Variants

nearbyint, nearbyintf, nearbyintl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
nearbyint
(C99)
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Определено в заголовке <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)
1-3) Округляет аргумент с плавающей точкой arg до целочисленного значения в формате с плавающей точкой, используя текущий режим округления .
4) Макрос общего типа: Если arg имеет тип long double , 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)
округляет до ближайшего целого числа, округляя от нуля в пограничных случаях
(функция)
получает или устанавливает направление округления
(функция)
C++ documentation для nearbyint