所以我有
float x = x + 0.25;
每次点击发生时都会调用此浮动
的NSLog(@ “%F” 中,x);
我希望nslog只返回整个数字部分,就像这样
x return
1.25 1
1.50 1
3.25 3
4.75 4
有什么想法吗?
答案 0 :(得分:12)
如果浮点数超出int
的范围,则转换为int
将无效。
使用"%.0f"
进行打印不会截断,它会四舍五入,因此4.75将打印为5
。
如果您的编译器(更确切地说,您的运行时库)支持它们,trunc()
中声明的truncf()
,truncl()
和<math.h>
函数就完全按照您的要求执行想:
printf("%.0f\n", trunc(x));
这些函数是C99中的新功能,因此您的编译器可能不支持它们。 C90确实提供floor()
功能;如果你为负数编写一些特殊情况代码,你可以使用它。
答案 1 :(得分:4)
您可以将x视为int(强制转换):
NSLog("%d", (int)x);
注意:这不会舍入,它会截断值,只返回整数部分。
编辑:请注意,这不是一种截断所有可能浮点值的安全方法,但它适用于小值(适用于int
)。