C语言取整详解:强制转换、trunc、floor、ceil与round对比

Ivy
Ivy
发布时间:2026-10-15 | 6人浏览过
原创

C语言提供了多种数值取整方式,包括默认的截断取整和math.h库中的trunc、floor、ceil、round等函数。理解各函数的取整方向对于精确控制浮点数至关重要。

什么是取整

在编程中,“取整”是将浮点数转换为整数的过程。最直观的理解是忽略小数部分,这在C语言的类型转换中表现为“向零取整”,即直接丢弃小数位,无论正负。这与数学上的四舍五入概念不同,因此在处理数据时需要严格区分。

第1步:变量赋值(隐式截断)

目的:演示变量接收浮点数时的默认行为。

操作说明:将浮点字面量赋给整型变量时,编译器会自动执行截断。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	int a = 2.99;
	int b = -2.99;
	printf("a=%2d\n", a);
	printf("b=%2d\n", b);
	return 0;
}

运行结果:

a = 2

b = -2

结论:C语言变量取整采用“向0取整”的方式,即去掉小数点后的所有数字,不遵循四舍五入规则。

第2步:使用 trunc(0向取整)

准备条件:引入头文件 <math.h>。

操作说明:调用 trunc 系列函数可显式执行向0取整操作。该函数返回浮点类型,若需整数需进行强转。

#include <stdio.h>
#include <math.h>
int main(void)
{
	printf("%2f\n", trunc(2.99));
	printf("%2f\n", trunc(-2.99));
	printf("%2d\n", (int)trunc(2.99));
	printf("%2d\n", (int)trunc(-2.99));
	return 0;
}

参数形式:

double  trunc (double x);
float   truncf (float x);
long double truncl (long double x);

结果验证:

 2.000000

-2.000000

 2

-2

注意:返回值为浮点类型,打印为整数时必须进行 (int) 强转。

第3步:使用 floor(向下取整)

准备条件:引用 <math.h>。

操作说明:floor 函数返回不大于参数的最大整数,即向负无穷(-∞)方向取整。

#include <stdio.h>
#include <math.h>
int main(void)
{
	printf("%2d\n", (int)floor(2.99));
	printf("%2d\n", (int)floor(-2.99));
	return 0;
}

结果验证:

 2

 -3

特性:正数变小,负数变大(绝对值变大),始终指向数轴左侧最近的整数。

第4步:使用 ceil(向上取整)

准备条件:引用 <math.h>。

操作说明:ceil 函数返回不小于参数的最小整数,即向正无穷(+∞)方向取整。

#include <stdio.h>
#include <math.h>
int main(void)
{
	printf("%2d\n", (int)ceil(2.99));
	printf("%2d\n", (int)ceil(-2.99));
	return 0;
}

结果验证:

 3

 -2

特性:正数变大,负数变小(绝对值变小),始终指向数轴右侧最近的整数。

第5步:使用 round(四舍五入)

准备条件:引用 <math.h>。

操作说明:round 函数实现标准的四舍五入功能。

#include <stdio.h>
#include <math.h>
int main(void)
{
	printf("%2d\n", (int)round(2.99));
	printf("%2d\n", (int)round(-2.01));
	printf("%2d\n", (int)round(2.01));
	printf("%2d\n", (int)round(-2.99));
	return 0;
}

参数形式:

     double round  (double x);
      float roundf (float x);
long double roundl (long double x);

结果验证:

 3

-3

 2

-3

结论:符合日常数学认知的四舍五入算法。

总结

在C语言开发中,应根据实际应用场景选择合适的取整策略:需要进行快速截取时使用变量赋值或 trunc;涉及空间布局或分页等需要确定边界时优先使用 floor 和 ceil;而在一般数值计算中则使用 round。以上就是C语言取整方法及相关函数的详细内容,更多关于C语言取整及数学函数的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表