objective-c - 数学与 NSNumbers 和整数

标签 objective-c cocoa math xcode4.2

在 objective-c 中,我尝试计算以下表达式:_c = _f/5 * 8; 它告诉我 intNSNumber 是二进制表达式的无效参数。

怎么了?我刚刚开始使用 objective-c 和 cocoa,但熟悉 php 和 basic 并且有点熟悉 javascript。

最佳答案

Objective-C 有几种不同的结构供您在计算中使用。从它的 C 根而来的是原始数字,intfloatdouble 等,您可以直接对其执行算术运算( +-*/等)。这些是您要使用的。

在更高层次上,Objective-C 也有 NSNumber 对象,它们是上面列出的原始类型的简单包装器。它们在需要存储基元的整个 Objective-C 中使用(通常在其他对象中,例如不直接采用基元值的数组和字典)。因为 NSNumber 是对象,所以不能直接对它们进行算术运算,必须先提取它们的原始值(例如使用 intValue 得到一个整数值, 或 doubleValue 以获得 double float )。因为不清楚你的问题中的变量代表什么,我不会冒险猜测你想做什么(我不想误导你),但你可以找到更多关于 NSNumberNSNumber Class Reference 中。

最后,正如 Richard 提到的,有 NSDecimalNumber。这些几乎从未被使用过,因为它们要么根本不需要(它们被设计为保存极高精度的数字,远远超出常规原始值的容量),要么使用起来太复杂。它们也有自己的算术运算方法,通常与日常使用无关。同样,如果您有兴趣,请深入了解 NSDecimalNumber Class Reference

在大多数情况下,您希望使用原始数字进行计算。当您需要存储它们时,您通常可以从 NSNumber 对象中“装箱”和“拆箱”(存储和检索)。

关于objective-c - 数学与 NSNumbers 和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889040/

相关文章:

math - 程序员理解数学学术著作

objective-c - 如何从 PDF 页面获取文本?

objective-c - NSBrowser setRowHeight,具有矩阵委托(delegate)的浏览器不支持

cocoa - iTunes 风格的 NSWindow 子类?

java - Java中Wallis函数的递归实现

c# - 从数据点导出曲线

ios - 为什么 UIImageToMat 在被调用时忽略了第三个参数?

iOS URLForUbiquityContainerIdentifier 在某些设备上返回 nil

ios - 解除分配旧 UIVIewController 的 UIStoryboard segue

Cocoa 应用程序响应键盘播放/暂停键而不启动 iTunes?