向上或向下舍入

时间:2011-08-21 19:29:03

标签: iphone objective-c ios math

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

例如:

1.4 = 1.0 1.77 = 2.0 1.1 = 1.0

等...

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

5 个答案:

答案 0 :(得分:8)

您可以使用math.h中定义的任何标准C库数学函数。 nearbyintf可以使用roundfceilffloorf,具体取决于您的需求。

如果您在编辑器中双击它们,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);