非常教程

C参考手册

数值 | Numerics

trunc

在头文件<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舍入为零)。

返回值

trunc

讨论

错误处理

按照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截断函数(p:253-254)
    • 7.25类型通用数学<tgmath.h>(p:373-375)
    • F.10.6.8截断函数(p:528)
  • C99标准(ISO / IEC 9899:1999):
    • 7.12.9.8截断函数(p:234)
    • 7.22类型通用数学<tgmath.h>(p:335-337)
    • F.9.6.8 trunc函数(p:464)

扩展内容

floorfloorphloorl(C99)(C99)

计算不大于给定值的最大整数(函数)

ceilceilfceill(C99)(C99)

计算不小于给定值的最小整数(函数)

roundlroundllround(C99)(C99)(C99)

舍入到最接近的整数,在中途情况下从零开始舍去(函数)

| trunc的C ++文档 |

C

C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。