作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试执行基本的 NSDecimal 数学,例如 NSDecimal 的加法、乘法和减法。这有可能实现吗?尝试使用 NSDecimalAdd出现错误
NSDecimal' 到不兼容类型“NSDecimal * _Nonnull”的参数
_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);
是最接近正确的,但前两个参数不正确,因为您试图传递属性的地址 - 这是不可能的。所以您应该看到如下错误:
Address of a property expression requested
如果您希望使用属性,则必须使用临时中间局部变量来保存您的值。例如。大致如下:
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
关于ios - 如何进行 NSDecimal 数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35908718/
我是一名优秀的程序员,十分优秀!