iOS:更正NSDecimalNumber计算

时间:2014-01-27 09:42:58

标签: objective-c nsdecimalnumber

第一次使用NSDecimalNumber,所以我想知道我真的需要创建这么多对象吗?在我的方法中,我想计算每日成本中的每月费用。每月费用存储在self.sumPerMonth中,参数costs是每日费用值。所以我想添加每月费用30 * costs。这是最简单的方法吗?

[self.sumPerMonth decimalNumberByAdding:[costs decimalNumberByMultiplyingBy:[NSDecimalNumber decimalNumberWithString:@"30"]]];

2 个答案:

答案 0 :(得分:2)

NSDecimalNumber是不可变的,所以是的,每次进行操作时都需要创建一个新对象。

处理对象的笨拙是您在不损失精度和可预测的舍入行为的情况下获得基础10计算的折衷方案。

Beware of mixing NSNumber and NSDecimalNumber

一点阅读:http://rypress.com/tutorials/objective-c/data-types/nsdecimalnumber.html

答案 1 :(得分:1)

是的,这是使用NSDecimalNumber的方式。

如果有正当理由关注创建的对象数量,您可以切换到普通NSDecimal结构类型。区别在于NSDecimal是可变的。