总新手问题,但这让我生气! 我想这一点:如何将浮点数转换为Objective C中的int值?
myInt = [myFloat integerValue];
,但我得到一个错误说基本上integerValue不能在彩车工作。
我该怎么做?
总新手问题,但这让我生气! 我想这一点:如何将浮点数转换为Objective C中的int值?
myInt = [myFloat integerValue];
,但我得到一个错误说基本上integerValue不能在彩车工作。
我该怎么做?
我敢肯定Ç风格的铸造语法可以在Objective C中使用,所以请尝试:
int myInt = (int) myFloat;
至少可以使编译器警告无声。
有什么错:记住
int myInt = myFloat;
熊本将使用默认的四舍五入规则,这是接近零(即-3.9f变成-3)
为了支持放松,请记住Objective-C是C的超集,而不是一种全新的语言。
您可以在常规的旧ANSI C中做的任何事情都可以在Objective-C中完成。
int myInt = (int) myFloat;
对我来说工作很好。
int myInt = [[NSNumber numberWithFloat:myFloat] intValue];
那么,这是一种选择。如果你喜欢绕道,我可以考虑使用NSString。 为什么容易,当有一个复杂的选择? :)
您还可以使用C的lroundf(myFloat)
。
一个非常有用的技巧:在Xcode的编辑器,输入你的代码说
myInt = roundf(someFloat);
然后控制/上roundf
和跳转到右键单击(或简单地命令点击)。
然后您将清楚地看到很长的可用功能列表给您。 (不可能全部记住它们,所以只需使用这个技巧。)
例如,在手头的示例中,您可能需要lrintf
。
更多提示:获取有关这些许多功能的文档。在您的Terminal.app(或任何外壳 - 与Xcode无关,只是正常的Terminal.app)只需键入man lrintf
,它会给你完整的信息。希望它能帮助别人。
下面是在2012推出了更简洁的方法:
myInt = @(myFloat).intValue;
彩车是原始类型,它们不是Objective-C的对象,因此不能使用[myFloat integerValue]就可以了。如果它不扩展NSObject,则不能将消息传递给它。 – seanalltogether 2008-11-14 04:39:36
过度使用方法是:[[NSNumber numberWithFloat:myFloat] integerValue](但你应该使用cast,真的) – Kornel 2009-07-06 14:00:43
@porneL 2013年,你可以'[@(myFloat)integerValue]' – 2013-04-07 01:16:20