我有一个浮动,我想要向上或向下舍入到最接近的整数。
例如:
1.4 = 1.0 1.77 = 2.0 1.1 = 1.0
等...
我在Objective C中这样做,所以我想我需要一个标准的数学函数......附近会不会这样做?
答案 0 :(得分:8)
您可以使用math.h
中定义的任何标准C库数学函数。 nearbyintf
可以使用roundf
或ceilf
或floorf
,具体取决于您的需求。
如果您在编辑器中双击它们,Xcode将向您显示这些功能的文档(UNIX手册页)。
答案 1 :(得分:4)
使用
double a = 2.3;
double b = round(a);
您可以在math.h中找到圆形和其他数学函数
答案 2 :(得分:2)
每当舍入时,考虑是否可能出现负数。如果是这样,传统的int(int)(x + 0.5)可能不会做你想要的,圆函数可能会更好。例如,round(-1.5)= 2。
答案 3 :(得分:0)
舍入很容易实现,因为将值转换为int
会截断数字的小数部分。让0 <= x < 1
。然后,如果您希望所有值在小数部分小于x
时向下舍入到最接近的整数,并且如果小数部分大于或等于x
则向上舍入到最接近的整数,则你只需要计算:
int roundedValueBasedOnX = (int) (value + (1 - x));
例如,如果x = 0.2
,那么我们有:
1) value = 9.4
,应该转到10
。
int roundedValueBasedOnX = (int) (9.4 + (1 - 0.2)) = (int) (9.4 + 0.8) = (int) (10.2) = 10;
2) value = 3.1
,应该转到3
。
int roundedValueBasedOnX = (int) (3.1 + (1 - 0.2)) = (int) (3.1 + 0.8) = (int) (3.9) = 3;
如果x = 0.7
,那么我们有:
3) value = 9.4
,应该转到9
。
int roundedValueBasedOnX = (int) (9.4 + (1 - 0.7)) = (int) (9.4 + 0.3) = (int) (9.7) = 9;
4) value = 3.8
,应该转到4
。
int roundedValueBasedOnX = (int) (3.8 + (1 - 0.7)) = (int) (3.8 + 0.3) = (int) (4.1) = 4;
希望有所帮助!
答案 4 :(得分:-2)
老派的方法是在数字上加0.5,然后让它截断:
int x = (int) (someFloat + 0.5);