总新手问题,但这让我很生气! 我正在尝试这个:
myInt = [myFloat integerValue];
但我得到一个错误,说基本上integerValue不适用于浮点数。
我该怎么做?
答案 0 :(得分:124)
我很确定C风格的转换语法在Objective C中有效,所以也尝试一下:
int myInt = (int) myFloat;
至少可能会使编译器警告静音。
答案 1 :(得分:11)
出了什么问题:
int myInt = myFloat;
请记住,这将使用默认的舍入规则,即向零(即-3.9f变为-3)
答案 2 :(得分:8)
int myInt = (int) myFloat;
对我来说很好。
int myInt = [[NSNumber numberWithFloat:myFloat] intValue];
嗯,这是一个选择。如果你喜欢绕行,我可以想到一些使用NSString。 当有复杂的替代方案时,为什么容易? :)
答案 3 :(得分:6)
您也可以使用C lroundf(myFloat)
。
一个非常有用的提示:在Xcode的编辑器中,输入代码为
myInt = roundf(someFloat);
然后控制/右键单击roundf
和跳转到定义(或只是按住命令单击)。
然后,您将清楚地看到非常长的可用功能列表。 (所有人都不可能记住它们,所以只需使用这个技巧。)
例如,在手边的示例中,lrintf
可能就是您想要的。
进一步提示:获取有关这些功能的文档。在您的Terminal.app(或任何shell - 与Xcode无关,只是正常的Terminal.app )只需键入man lrintf
,它将为您提供完整信息。希望它可以帮到某人。
答案 4 :(得分:2)
为了支持放松,请记住Objective-C是C的超集,而不是一种全新的语言。
您可以在常规旧ANSI C中执行的任何操作都可以在Objective-C中完成。
答案 5 :(得分:0)
这是2012年推出的更简洁的方法:
myInt = @(myFloat).intValue;