目前,我正在从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;
}
那么,我的threeYear属性应该是NSDecimal还是NSDecimalNumber。另外,在getThirtyYear()方法中进行除法时,我应该使用NSDecimalNumber进行算术运算。
答案 0 :(得分: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 Class Reference,因为该类有一个有用方法的数字(没有双关语)。希望这会有所帮助。