gpt4 book ai didi

ios - 如何进行 NSDecimal 数学运算?

转载 作者:行者123 更新时间:2023-11-30 20:23:33 25 4
gpt4 key购买 nike

我正在尝试执行基本的 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 是一个值类型;就像intfloat等。但是数学函数,例如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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com