Spec-Zone.ru › C

trunc, truncf, truncl

Определено в заголовочном файле <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

Ссылки

  • Стандарт 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)

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/trunc

Spec-Zone.ru

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