由于整数的表示范围远小于浮点数的表示范围,直接采用强制转换把浮点数转换成整数有可能出现数据错误,所以先采用C语言标准库中的floor()函数实现”不大于X的最大整数“,完成粗核对碰凳闹X的取整笑罩操作,然后再加1。 表示方法为:floor(x)+1,输出方法为:%.0f
头文件:#include
函数原型:double floor(double x);
函数说明:largest integral value not greater than argument 返回不大于参数x的最大整数
参考代码:
math库里面有,好像用ceil函数是取上整,floor函数是取下整
如果楼颤闭主非要自己写代码的话,那么这将是一茄罩个非常复杂的过程,要考虑很多情况,而茄纳裂且还需要熟悉浮点数的结构
直接进行显式类型转换可陪源能会由于精神乱睁度问题而出错,建议先用floor()取整数游岁部分:
#include
float x=9.234;
int a=(int)floor(x)+1;
一楼, 二楼和三楼的答案都是错的, 因为没有伍樱老考虑x是整数的情况.
四楼的答案正解. math.h里面有这个, 你这里用ceil()就行了
如果实在不想用函数而要直颂陪接类型转换的话可以人工去精度写成腔升
(int)(x+1.0-epsilon)
epsilon定义为一个足够小的数, 一般来说10^-6 = 0.000001
int x1 = (int)x;
int x2 = (int)(x + 1);
