如何执行NSDecimal Math?

时间:2016-03-10 05:58:28

标签: ios objective-c c nsdecimal

我正在尝试执行基本的NSDecimal数学运算,例如NSDecimals的加法乘法和减法。这有可能实现吗? 试图使用NSDecimalAdd 得到错误

NSDecimal'到不兼容类型的参数' NSDecimal * _Nonnull'

dasherized case

也失败了

1 个答案:

答案 0 :(得分:1)

NSDecimal值类型;就像intfloat等一样。然而,数学函数(例如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