2012-01-09 126 views
10

如何将float转换为int,同时舍入到下一个整数?例如,1.00001会去2和1.9999会去2.在Objective-C中将浮点数转换为int

+0

请逆向工程&这里http://stackoverflow.com/questions/286756/how-do-i-convert-a-float-to-an-int-in -objective-c – wanmuz 2012-01-09 08:16:07

+0

你为什么使用float而不是double?另一个问题,你有没有想过要买一本关于C语言的书?每一个听到的功能层,小区和圆? – gnasher729 2014-05-29 07:45:03

回答

61
float myFloat = 3.333 

// for nearest integer rounded up (3.333 -> 4): 
int result = (int)ceilf(myFloat); 

// for nearest integer (3.4999 -> 3, 3.5 -> 4): 
int result = (int)roundf(myFloat); 

// for nearest integer rounded down (3.999 -> 3): 
int result = (int)floor(myFloat); 

// For just an integer value (for which you don't care about accuracy) 
int result = (int)myFloat; 
+0

谢谢!它为我工作。 – Raja 2017-05-03 06:07:56

11

使用ceil功能:

int intValue = (int)ceil(yourValue); 
1

您可以使用下面的C方法从不同的数据类型得到int类型。

extern float ceilf(float); 
extern double ceil(double); 
extern long double ceill(long double); 

这些函数分别返回float,double和long double。但是这些功能的工作是获得论证的底层或底层。正如http://en.wikipedia.org/wiki/Floor_and_ceiling_functions

然后你可以将返回值转换为所需的类型。

int intVariable = (int)ceilf(floatValueToConvert); 

希望它有帮助。

0

如果我们有像13.123浮点值将其转换成整数像13

代码

浮子floatnumber = 13.123; //你也可以使用CGFloat的,而不是浮

NSLog(@"%.f",floatnumber); // use for print in command prompt