将float转换为int而不进行舍入

时间:2013-06-12 08:53:10

标签: objective-c

我想将十进制数转换为int而不对其进行舍入,例如: 如果数字是3.9,它将变成3(如果它已被舍入,那么它将是4)。

5 个答案:

答案 0 :(得分:5)

您通常不需要做任何特殊操作,因为默认情况下从float / double到整数类型的转换会导致截断:

float f = 3.9f;
int i = (int)f; // i = 3

答案 1 :(得分:3)

这取决于您希望如何处理负值。对int进行类型转换只会截断小数点左边的部分将保留。 -3.9f会变成-3。在铸造之前使用地板将确保它导致-4。 (当然都在变量类型边界内)

答案 2 :(得分:2)

你可以这样做: -

float myFloat = 3.9;


    int result1 = (int)ceilf(myFloat );
NSLog(@"%d",result1);

    int result2 = (int)roundf(myFloat );
NSLog(@"%d",result2);

    int result3 = (int)floor(myFloat);
NSLog(@"%d",result3);

int result4 = (int) (myFloat);

NSLog(@"%d",result4);

输出 4 4 3 3

答案 3 :(得分:1)

只需将float转换为int,它就会截断你的结果。

答案 4 :(得分:0)

您可以简单地将类型转换为int