完全是新手问题,但这让我发疯!我正在尝试这个:
myInt = [myFloat integerValue];
但我收到一个错误,说本质上 integerValue 不适用于浮点数。
我该怎么做?
完全是新手问题,但这让我发疯!我正在尝试这个:
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 (或任何外壳 - 与 Xcode 无关,只是普通的 Terminal.app)中,只需键入man lrintf
它就会为您提供完整的信息。希望它可以帮助某人。
为了支持 unwind,请记住 Objective-C 是 C 的超集,而不是一种全新的语言。
您可以在常规的旧 ANSI C 中执行的任何操作都可以在 Objective-C 中完成。
这是 2012 年引入的更简洁的方法:
myInt = @(myFloat).intValue;