Ios 如何执行十进制数学?
我正在尝试执行基本的NSDecimal数学,例如NSDecimal的加法、乘法和减法。这有可能实现吗? 尝试使用NSDecimalAdd 获取错误 NSDecimal'到不兼容类型“NSDecimal*\u非空”的参数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
_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我似乎无法让这个函数工作。你介意看一下我更新的问题吗?我想你需要的是再加几个符号&
。