我有一个要求,将键盘数字输入的金额转换为美分,例如:
键入1将输出0.01键入10将输出0.10键入123将输出1.23键入12345将输出123.45
我目前的解决方案包括乘以0.01并查看提醒:
// split into whole and reminder
let mod = modf(doubleAmount * 0.01)
// define a rounding behavior
let behavior = NSDecimalNumberHandler(roundingMode: .plain,
scale: Int16(places),
raiseOnExactness: false,
raiseOnOverflow: false,
raiseOnUnderflow: false,
raiseOnDivideByZero: true)
let whole = mod.0
let reminder = NSDecimalNumber(value: mod.1).rounding(accordingToBehavior: behavior)
// formatting...
let newnumber = NSNumber(value: whole + reminder.doubleValue)
这将适用于大多数值,但在处理10、100、1000等整数时会破坏格式。然后格式将为0.1、1.0、10.0,而我需要它们显示为0.10、1.00、10.00等。
实现这一目标的最佳/正确方法是什么?
NumberFormatter类型具有可用于此场景的multiplier
属性,因此无需进行进一步的计算
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
formatter.multiplier = 0.01