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