获取浮点数的整数部分:Objective-C

时间:2011-10-23 18:54:41

标签: objective-c c

所以我有

float x = x + 0.25;

每次点击发生时都会调用此浮动

的NSLog(@ “%F” 中,x);

我希望nslog只返回整个数字部分,就像这样

  x        return        

 1.25         1
 1.50         1
 3.25         3
 4.75         4

有什么想法吗?

2 个答案:

答案 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)。