【C语言】取整函数ceil()用法

ceil功能:

返回大于等于表达式的最小整数。

ceil--数学函数,同样要加数学头文件#include<math.h>

ceil返回大于等于表达式的最小整数,例如:float a=4.5 那么int ceil(a)=5

 

ceil函数和float强制转换为int类型的区别:

ceil函数计算时与四舍五入无关,这和浮点型强制转换为整型是相同的;和float强制转换为int类型不同的是:ceil取整返回的是大于等于表达式的最小整数,而float强制转换int取整返回的是小于等于表达式的最大整数

例如:输入4.6,分别返回的是5和4

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oCd57uq5LiH6Iyc,size_16,color_FFFFFF,t_70,g_se,x_16

举例说明

1.ceil函数可用于快递更具重量计算运费等小数取整的运算。例如

快递费用计算:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oCd57uq5LiH6Iyc,size_20,color_FFFFFF,t_70,g_se,x_16

​
#include<stdio.h>
#include<math.h>
	int main(void)
	{ 
	  int q,n;
	  float t;
	  scanf("%d,%f",&q,&t);
	  if(q==0)
	  	printf("Price: %.2f\n",10+3.0*ceil(t-1));
	  else if(q==1)
		printf("Price: %.2f\n",10+4.0*ceil(t-1));
	  else if(q==2)
		printf("Price: %.2f\n",15+5.0*ceil(t-1));
	  else if(q==3)
		printf("Price: %.2f\n",15+6.5*ceil(t-1));
	  else if(q==4)
		printf("Price: %.2f\n",15+10.0*ceil(t-1));
	  else
	  {
		printf("Error in Area\n");
		printf("Price: 0.00\n");
	  }	 
       return 0;
	}

​

利用ceil函数很轻松地解决了小数化整的问题!!!

2.上下取整

//上下取整
#include<stdio.h>
#include<math.h>
int main()
{
	double n;
	int x, y;
	scanf("%lf", &n);//输入6.4的话
	x = ceil(n - 1);//输出6
	y = ceil(n);//输出7
	printf("%d %d\n", x, y);//与四舍五入无关
	return 0;
}

​

​

 

 

 

### C语言中的取整操作 在C语言中,可以通过多种方式实现取整操作。以下是几种常见的方法: #### 方法一:强制类型转换 通过将浮点数强制转换为整型可以实现简单的取整功能。需要注意的是,这种方式采用的是 **截断取整** 的方式,即丢弃小数部分。 ```c #include <stdio.h> int main() { double num1 = 2.9, num2 = -2.9; int result1 = (int)num1; // 结果是 2 int result2 = (int)num2; // 结果是 -2 printf("result1: %d\n", result1); printf("result2: %d\n", result2); return 0; } ``` 这种方法适用于不需要考虑四舍五入的情况[^3]。 --- #### 方法二:使用 `trunc` 函数 如果需要更加精确的控制,可以使用标准库 `<math.h>` 中提供的 `trunc` 函数。该函数的作用是对浮点数进行零方向取整(即去掉小数部分),其行为类似于强制类型转换。 ```c #include <stdio.h> #include <math.h> int main() { double num1 = 2.9, num2 = -2.9; int result1 = trunc(num1); // 结果是 2 int result2 = trunc(num2); // 结果是 -2 printf("result1: %.0f\n", result1); printf("result2: %.0f\n", result2); return 0; } ``` 此方法同样实现了零方向取整的功能。 --- #### 方法三:地板取整 (`floor`) 对于需要向下取整(无论正负都朝负无穷方向取整)的需求,可以使用 `floor` 函数。它会返回不大于给定数值的最大整数。 ```c #include <stdio.h> #include <math.h> int main() { double num1 = 2.9, num2 = -2.9; int result1 = floor(num1); // 结果是 2 int result2 = floor(num2); // 结果是 -3 printf("result1: %.0f\n", result1); printf("result2: %.0f\n", result2); return 0; } ``` 这种取整方式特别适合处理一些特定场景下的需求。 --- #### 方法四:天花板取整 (`ceil`) 与地板取整相反,天花板取整是指向上取整(无论正负都朝正无穷方向取整)。这可以通过调用 `ceil` 函数完成。 ```c #include <stdio.h> #include <math.h> int main() { double num1 = 2.9, num2 = -2.9; int result1 = ceil(num1); // 结果是 3 int result2 = ceil(num2); // 结果是 -2 printf("result1: %.0f\n", result1); printf("result2: %.0f\n", result2); return 0; } ``` 上述代码展示了如何利用 `ceil` 实现不同类型的取整操作。 --- #### 方法五:自定义取整逻辑 除了以上内置的方法外,还可以根据实际需求编写自己的取整算法。例如,为了实现四舍五入的效果,可以在加减一定偏移量后再进行取整。 ```c #include <stdio.h> #include <math.h> int main() { double num1 = 2.5, num2 = -2.5; int result1 = round(num1); // 结果是 3 int result2 = round(num2); // 结果是 -2 printf("result1: %d\n", result1); printf("result2: %d\n", result2); return 0; } ``` 这里使用的 `round` 是一种更为高级的方式,能够自动按照四舍五入规则完成取整[^4]。 --- ### 总结 不同的取整方法对应着不同的应用场景,在开发过程中可以根据具体需求选择合适的技术手段。无论是基本的数据类型转换还是借助强大的数学库函数,都可以有效地满足各种复杂的业务逻辑要求。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值