-1

什么对象类型用于存储一定数量的钱?我有一个UITextField用户可以输入以美元为单位的金额,我将其转换为另一种货币,我想知道以哪种类型存储金额(float/double不利于金钱),以及为键盘选择什么那个领域?

4

4 回答 4

4

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

于 2013-02-24T19:12:23.657 回答
1

你应该做以下事情

  1. 设置键盘类型小数
  2. 在键盘附件视图中设置文本字段(非强制)
  3. 应用一个正则表达式,一旦用户使用了浮点 (.),他将不允许重新输入它。
  4. 在完成编辑的文本字段上,您可以将其保存为 NSDecimal
于 2013-02-24T19:27:31.263 回答
1

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

对于键盘,有Decimal pad

于 2013-02-24T19:28:14.483 回答
1

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

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

在更基本的

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

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

NSRound银行家

四舍五入到最接近的可能返回值;当两个可能性中间时,返回最后一位为偶数的可能性。在实践中,这意味着从长远来看,数字将像向下舍入一样频繁地向上取整;不会有系统偏差。

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

于 2013-02-24T19:40:03.853 回答