我想将十进制数转换为 int 而不对其进行四舍五入,例如:如果数字为 3.9,它将变成 3(如果四舍五入,则为 4)。
问问题
13150 次
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 回答