1

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

4

5 回答 5

6

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

float f = 3.9f;
int i = (int)f; // i = 3
于 2013-06-12T08:56:20.353 回答
3

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

于 2013-06-12T09:08:20.893 回答
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

于 2013-06-12T09:03:49.583 回答
1

只需将浮点数转换为 int,它就会截断您的结果。

于 2013-06-12T08:56:56.213 回答
0

您可以简单的类型转换为 int

于 2013-06-12T08:57:32.977 回答