如何在目标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;