NSDecimalNumber 和从末尾弹出数字

Posted

技术标签:

【中文标题】NSDecimalNumber 和从末尾弹出数字【英文标题】:NSDecimalNumber and popping digits off of the end 【发布时间】:2010-10-09 18:22:36 【问题描述】:

我不太确定该怎么称呼它,但我有一个文本字段来保存货币值,所以我将它存储为 NSDecimalNumber。我不想使用数字和符号键盘,所以我使用数字键盘,并像 ATM 一样推断小数位的位置。它适用于输入数字。输入 1234 并显示 $12.34 但现在我需要实现退格。因此,假设输入 12.34 美元,击退空格将显示 1.23 美元。我不太确定如何使用十进制数来做到这一点。使用 int 您只需除以 10 即可删除最右边的数字,但这显然在这里不起作用。我可以通过一些凌乱的转换为 int / 10 然后回到十进制来做到这一点,但这听起来很可怕......有什么建议吗?

【问题讨论】:

【参考方案1】:

拨打- (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber withBehavior:(id < NSDecimalNumberBehaviors >)behavior就可以了

【讨论】:

【参考方案2】:

使用 stringValue 怎么样?

1) NSDecimalNumber 转字符串

2) 子串最后

3) 字符串到 NSDecimalNumber


以下是 Swift 3 的示例

func popLastNumber(of number: NSDecimalNumber) -> NSDecimalNumber 

  let stringFromNumber = number.stringValue //NSNumber property

  let lastIndex = stringFromNumber.endIndex
  let targetIndex = stringFromNumber.index(before: lastIndex)
  let removed = stringFromNumber.substring(to: targetIndex)

  return NSDecimalNumber(string: removed)

如果您输入的数字是单个数字,它将返回 NaN。

如果需要,您可以将其替换为 NSDecimalNumber.zero。

它可能像计算器上的删除按钮一样工作。


它没有经过太多测试。

如果有人发现另一个 NaN 案例,请回复报告。

【讨论】:

以上是关于NSDecimalNumber 和从末尾弹出数字的主要内容,如果未能解决你的问题,请参考以下文章

NSDecimalNumber 值的比例和精度

NSDecimalNumber 和大的无符号长长(64 位)整数

舍入 NSDecimalNumber HalfDown

为什么NSString中的NSDecimalNumber?

根据语言环境将 NSSting 转换为 NSDecimalNumber

NSDecimalNumber 不在控制台中显示值