C语言中怎样表示大于X的最小整数

比如任意给定x=9.234,编程实现求大于或等于x的最小整数,怎么写代码?

由于整数的表示范围远小于浮点数的表示范围,直接采用强制转换把浮点数转换成整数有可能出现数据错误,所以先采用C语言标准库中的floor()函数实现”不大于X的最大整数“,完成对X的取整操作,然后再加1。  表示方法为:floor(x)+1,输出方法为:%.0f

头文件:#include <math.h>

函数原型:double floor(double x); 

函数说明:largest integral value not greater than argument 返回不大于参数x的最大整数

参考代码:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-11
math库里面有,好像用ceil函数是取上整,floor函数是取下整

如果楼主非要自己写代码的话,那么这将是一个非常复杂的过程,要考虑很多情况,而且还需要熟悉浮点数的结构
第2个回答  2010-01-11
直接进行显式类型转换可能会由于精度问题而出错,建议先用floor()取整数部分:

#include <math.h>

float x=9.234;

int a=(int)floor(x)+1;
第3个回答  2010-01-11
一楼, 二楼和三楼的答案都是错的, 因为没有考虑x是整数的情况.
四楼的答案正解. math.h里面有这个, 你这里用ceil()就行了

如果实在不想用函数而要直接类型转换的话可以人工去精度写成
(int)(x+1.0-epsilon)
epsilon定义为一个足够小的数, 一般来说10^-6 = 0.000001
第4个回答  2010-01-11
int x1 = (int)x;
int x2 = (int)(x + 1);