持有金额的对象

时间:2013-02-24 19:10:10

标签: cocoa-touch

什么样的对象类型用于存储金额?我有一个UITextField,用户可以用美元输入一笔金额,我将转换为另一种货币,我想知道存储金额的类型(float / {{1}这对于那个领域的键盘选择了什么?

4 个答案:

答案 0 :(得分:4)

您可以使用NSDecimal或NSDecimalNumber,它们是精确的,存储为基数为10的数字,与float或double不同。

答案 1 :(得分:1)

你应该做以下事情

  1. 设置键盘类型十进制
  2. 在键盘附件视图中设置文本字段(非强制性)
  3. 应用用户使用浮动后的正则表达式 (...)他将不被允许重新输入。
  4. 在文本字段上完成编辑,您可以将其保存为NSDecimal

答案 2 :(得分:1)

我会使用NSDecimalNumber  或NSDecimal,因为它们存储在base10中。

对于键盘,有Decimal pad

答案 3 :(得分:1)

我建议使用NSDecimalNumber。此外,您还需要使用以下方法:

- (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber withBehavior:(id < NSDecimalNumberBehaviors >)behavior

更基本的

- (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber

因为您可以提供的行为之一是:

  

NSRoundBankers

     

舍入到最接近的可能返回值;什么时候   在两种可能性之间,返回最后一种可能性   数字是均匀的。在实践中,这意味着,从长远来看,   数字将随着它们向下舍入而被四舍五入;那里   不会有系统的偏见。

当然也可以使用NSDecimal,但我更喜欢NSDecimalNumber的OO API而不是NSDecimal的基于C的API。