在 objective-c 中,我尝试计算以下表达式:_c = _f/5 * 8;
它告诉我 int
和 NSNumber
是二进制表达式的无效参数。
怎么了?我刚刚开始使用 objective-c 和 cocoa,但熟悉 php 和 basic 并且有点熟悉 javascript。
最佳答案
Objective-C 有几种不同的结构供您在计算中使用。从它的 C 根而来的是原始数字,int
、float
、double
等,您可以直接对其执行算术运算( +
、-
、*
、/
等)。这些是您要使用的。
在更高层次上,Objective-C 也有 NSNumber
对象,它们是上面列出的原始类型的简单包装器。它们在需要存储基元的整个 Objective-C 中使用(通常在其他对象中,例如不直接采用基元值的数组和字典)。因为 NSNumber
是对象,所以不能直接对它们进行算术运算,必须先提取它们的原始值(例如使用 intValue
得到一个整数值, 或 doubleValue
以获得 double float )。因为不清楚你的问题中的变量代表什么,我不会冒险猜测你想做什么(我不想误导你),但你可以找到更多关于 NSNumber
在 NSNumber
Class Reference 中。
最后,正如 Richard 提到的,有 NSDecimalNumber
。这些几乎从未被使用过,因为它们要么根本不需要(它们被设计为保存极高精度的数字,远远超出常规原始值的容量),要么使用起来太复杂。它们也有自己的算术运算方法,通常与日常使用无关。同样,如果您有兴趣,请深入了解 NSDecimalNumber
Class Reference。
在大多数情况下,您希望使用原始数字进行计算。当您需要存储它们时,您通常可以从 NSNumber
对象中“装箱”和“拆箱”(存储和检索)。
关于objective-c - 数学与 NSNumbers 和整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889040/