如何在目标C中将float转换为int?

总新手问题,但这是让我生气! 我正在尝试这个:

myInt = [myFloat integerValue]; 

但我得到一个错误,说本质上integerValue不适用于浮动。

我该怎么做?

我非常确定C风格的转换语法在Objective C中起作用,所以也要这样做:

 int myInt = (int) myFloat; 

至less可以使编译器警告声无声。

有什么问题:

 int myInt = myFloat; 

请记住,这将使用默认的舍入规则,即趋近于零(即-3.9f变为-3)

 int myInt = (int) myFloat; 

为我工作得很好。

 int myInt = [[NSNumber numberWithFloat:myFloat] intValue]; 

那么,这是一个select。 如果你喜欢绕道,我可以考虑使用NSString。 为什么容易,当有一个复杂的select? 🙂

你也可以使用C的lroundf(myFloat)


一个非常有用的提示:在Xcode的编辑器中,input你的代码

 myInt = roundf(someFloat); 

然后控制/右键单击roundf跳转到定义 (或者简单地单击命令)。

然后您将清楚地看到可用的function列表 。 (这是不可能的,所以只需要使用这个技巧。)

例如,在手头的示例中,可能lrintf就是你想要的。

更进一步的提示:获取有关这些function的文档。 在你的Terminal.app(或任何shell – 与Xcode无关, 只是普通的Terminal.app )只需键入man lrintf ,它会给你完整的信息。 希望它可以帮助别人。

为了支持放松,请记住,Objective-C是C的超集,而不是一种全新的语言。

在常规的旧ANSI C中可以做的任何事情都可以在Objective-C中完成。

这是2012年推出的一个更简洁的方法:

 myInt = @(myFloat).intValue;