1

目前我正在从 web 服务中提取数据并将数据填充到自定义对象中。

我正在存储小数,例如 4.56 等。

我对 NSDecimal 和 NSDecimalNumber 有点困惑。我读过 NSDecimalNumber 在处理金钱时应该使用,我就是这样。所以问题是我的属性应该是 NSDecimal 还是 NSDecimalNumber。我已经阅读了您的模型将是 NSDecimal 并且您将使用 NSDecimalNumber 进行任何带有数字的算术的案例。

我基本上想在ObjectiveC中创建这样的行为

private decimal thirtyYear;

public decimal getThirtyYear(){
    return thirtyYear/100.0;
}

public void setThrityYear(decimal rate){
    thirtyYear = rate;
}

那么,我的 30 年属性应该是 NSDecimal 还是 NSDecimalNumber。此外,在 getThirtyYear() 方法中进行除法时,我应该使用 NSDecimalNumber 进行算术运算。

4

1 回答 1

0

问题 #1:我的 30 年属性应该是 NSDecimal 还是 NSDecimalNumber?

正如您所说,如果您正在处理任何财务计算,请始终使用 NSDecimalNumber 和 NSDecimalNumber 在执行基数 10 计算时提供可预测的舍入行为和精度。

如果您想了解更多详细信息,请直接从 Apple 文档中获取:

NSDecimalNumber 是 NSNumber 的一个不可变子类,它为执行 base-10 算术提供了一个面向对象的包装器。实例可以表示可以表示为尾数 x 10 指数的任何数字,其中尾数是最多 38 位长的十进制整数,指数是 -128 和 127 之间的整数。

现在关于 NSDecimal,这是一个 C 结构,在 Objective C 中使用起来并不容易。如上所述,这就是 NSDecimalNumber 对象的来源,它可以与面向对象的语言一起使用。总之 NSDecimalNumber 是要走的路。它更容易使用。

问题 #2:在 getThirtyYear() 方法中除法时,我应该使用 NSDecimalNumber 进行算术吗?

如果精度计算在您的应用程序中至关重要,那么可以使用 NSDecimalNumber,因为它们保证是准确的。

由于您将使用 NSDecimalNumber,我建议您查看NSDecimalNumber 类参考,因为该类有许多有用的方法(不是双关语)。希望这可以帮助。

于 2013-08-08T04:14:13.413 回答