trunc, truncf, truncl

来自cppreference.com
< c‎ | numeric‎ | math
 
 
 
常用数学函数
函数
基本运算
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)(C99)(C99)
指数函数
(C99)
(C99)
(C99)
(C99)
幂函数
(C99)
(C99)
三角及双曲函数
(C99)
(C99)
(C99)
误差及伽马函数
(C99)
(C99)
(C99)
(C99)
临近整数的浮点运算
(C99)(C99)(C99)
trunc
(C99)
(C99)(C99)(C99)
浮点数操作函数
(C99)(C99)
(C99)
(C99)
分类
(C99)
(C99)
(C99)
类型
(C99)(C99)
宏常量
 
定义于头文件 <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 standard (ISO/IEC 9899:2011):
  • 7.12.9.8 The trunc functions (p: 253-254)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.6.8 The trunc functions (p: 528)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.9.8 The trunc functions (p: 234)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.6.8 The trunc functions (p: 464)

参阅

计算不大于给定值的最大整数
(函数)
(C99)(C99)
计算不小于给定值的最小整数
(函数)
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
取整到最接近的整数,在相邻整数正中间时取远离零的数
(函数)