在Objective-C中将浮点数转换为整数

11

如何将float转换为int并向上舍入到下一个整数?例如,1.00001 会变成 2,1.9999 也会变成 2。


请参考这里:https://dev59.com/5HVC5IYBdhLWcg3wdw25 - wanmuz
你为什么使用float而不是double?另一个问题,你有没有想过买一本关于C语言的书?你听说过floor、ceil和round这些函数吗? - gnasher729
4个回答

65
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;

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。但是这些函数的作用是获取参数的 ceil 或 floor 值。如 http://en.wikipedia.org/wiki/Floor_and_ceiling_functions 然后,您可以将返回值转换为所需的类型。
int intVariable = (int)ceilf(floatValueToConvert);

希望它有所帮助。

0

如果我们有一个浮点数值,例如13.123,需要将其转换为整数,例如13

代码

float floatnumber = 13.123; //您也可以使用CGFloat代替float

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接