将float转换为int而不舍入



我想将一个十进制数转换为int型而不四舍五入,例如:如果数字是3.9,它将变成3(如果它是四舍五入,它将变成4)。

通常不需要做任何特别的事情,因为默认情况下,从float/double类型强制转换为整数类型会导致截断:

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

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

你可以这样做:-

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);
<<p> 输出/strong>443.3

将float类型强制转换为int类型,它将截断你的结果

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

最新更新