Namespaces
Variants

trunc, truncf, truncl

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
(C99) (C99) (C99)
trunc
(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 truncf ( float arg ) ;
(1) (начиная с C99)
double trunc ( double arg ) ;
(2) (начиная с C99)
long double truncl ( long double arg ) ;
(3) (начиная с C99)
Определено в заголовке <tgmath.h>
#define trunc( arg )
(4) (начиная с C99)
1-3) Вычисляет ближайшее целое число, не превышающее по модулю arg .
4) Макрос общего типа: Если arg имеет тип long double , truncl вызывается. В противном случае, если arg имеет целочисленный тип или тип double , trunc вызывается. В остальных случаях truncf вызывается.

Содержание

Параметры

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

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

Если ошибок не возникает, возвращается ближайшее целое значение, не превышающее по модулю arg (другими словами, arg округлённое в сторону нуля).

Возвращаемое значение
math-trunc.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("trunc(+2.7) = %+.1f\n", trunc(+2.7));
    printf("trunc(-2.7) = %+.1f\n", trunc(-2.7));
    printf("trunc(-0.0) = %+.1f\n", trunc(-0.0));
    printf("trunc(-Inf) = %+f\n",   trunc(-INFINITY));
}

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

trunc(+2.7) = +2.0
trunc(-2.7) = -2.0
trunc(-0.0) = -0.0
trunc(-Inf) = -inf

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
  • 7.12.9.8 Функции trunc (стр.: TBD)
  • 7.25 Обобщённая математика <tgmath.h> (стр.: TBD)
  • F.10.6.8 Функции trunc (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.12.9.8 Функции trunc (стр.: TBD)
  • 7.25 Обобщённая математика <tgmath.h> (стр.: TBD)
  • F.10.6.8 Функции trunc (стр.: TBD)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.12.9.8 Функции trunc (стр. 253-254)
  • 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
  • F.10.6.8 Функции trunc (стр. 528)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.12.9.8 Функции trunc (стр. 234)
  • 7.22 Обобщенная математика <tgmath.h> (стр. 335-337)
  • F.9.6.8 Функции trunc (стр. 464)

Смотрите также

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