向上或向下舍入

我有一个浮动,我想要向上或向下舍入到最接近的整数。

例如:

1.4 = 1.0 1.77 = 2.0 1.1 = 1.0

等等…

我在Objective C中这样做,所以我想我需要一个标准的数学函数……附近会不会这样做?

您可以使用math.h定义的任何标准C库数学函数。 nearbyintf会起作用,就像roundfceilfroundf ceilf ,取决于你想要什么。

如果您在编辑器中双击它们,Xcode将显示这些函数的文档(UNIX手册页)。

使用

 double a = 2.3; double b = round(a); 

您可以在math.h中找到圆形和其他数学函数

无论何时舍入,都要考虑负数是否可行。 如果是这样,传统的int(int)(x + 0.5)可能不会做你想要的,圆函数可能会更好。 例如,round(-1.5)= 2。

舍入很容易实现,因为将值转换为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; 

希望有所帮助!

老派的方法是在数字上加0.5,然后让它截断:

 int x = (int) (someFloat + 0.5);