我正在尝试执行基本的NSDecimal数学运算,例如NSDecimals的加法乘法和减法。这有可能实现吗? 试图使用NSDecimalAdd 得到错误
NSDecimal'到不兼容类型的参数' NSDecimal * _Nonnull'
dasherized case
也失败了
答案 0 :(得分:1)
NSDecimal
是值类型;就像int
,float
等一样。然而,数学函数(例如NSDecimalAdd
)接受它们的参数并返回结果按地址 - 这就是参数&安培;结果必须是变量通过使用&
运算符获取的地址传递给函数而不是值。
你的第二次尝试:
NSDecimalAdd(&_meat.colonyQueenObject.count.creatureCount,
&_meat.colonyObject.count.creatureCount,
&creaturesAdded,
NSRoundBankers);
最接近正确,但前两个参数不正确,因为您试图传递属性的地址 - 这是不可能的。所以你应该看到如下错误:
请求的属性表达式的地址
如果您希望使用属性,则必须使用临时中间局部变量来保存您的值。例如。类似的东西:
NSDecimal leftOperand = _meat.colonyObject.count.creatureCount; // copy left operand value to variable
NSDecimal result; // variable for result
NSDecimalAdd(&result,
&leftOperand,
&creaturesAdded,
NSRoundBankers);
_meat.colonyQueenObject.count.creatureCount = result; // assign result to property
您还应该检查NSDecimalAdd
的返回值,因为它指示操作是否正确执行(NSCalculationNoError
)。
HTH