Ios 如何执行十进制数学?

Ios 如何执行十进制数学?,ios,objective-c,c,nsdecimal,Ios,Objective C,C,Nsdecimal,我正在尝试执行基本的NSDecimal数学,例如NSDecimal的加法、乘法和减法。这有可能实现吗? 尝试使用NSDecimalAdd 获取错误 NSDecimal'到不兼容类型“NSDecimal*\u非空”的参数 _meat.colonyQueenObject.count.creatureCount = [colonyQueenNumber decimalValue]; -(void)adjustCountsCreatureCountforAddedCreatures:(NSDecim

我正在尝试执行基本的NSDecimal数学,例如NSDecimal的加法、乘法和减法。这有可能实现吗? 尝试使用NSDecimalAdd 获取错误

NSDecimal'到不兼容类型“NSDecimal*\u非空”的参数

_meat.colonyQueenObject.count.creatureCount = [colonyQueenNumber decimalValue];


-(void)adjustCountsCreatureCountforAddedCreatures:(NSDecimal)creaturesAdded meatCount:(NSDecimal)meatCount larvaCount:(NSDecimal)larvaCount creatureType:    (int)creatureType{

    NSDecimalAdd(_meat.colonyQueenObject.count.creatureCount, _meat.colonyQueenObject.count.creatureCount, &creaturesAdded, NSRoundBankers);


    }


   NSDecimalAdd(&_meat.colonyQueenObject.count.creatureCount, &_meat.colonyObject.count.creatureCount, &creaturesAdded, NSRoundBankers);

也失败

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

您使用的是
NSDecimalNumber
还是
NSDecimalNumber
?NSDecimal我需要可变数字
NSDecimal
只是一个结构。要添加两个
NSDecimalAdd
s,可以调用
NSDecimalAdd
函数。要乘法,还有另一个函数。我让你猜一下它叫什么。@user3386109我似乎无法让这个函数工作。你介意看一下我更新的问题吗?我想你需要的是再加几个符号
&