作者:我是你的鹏鹏鹏爷 | 来源:互联网 | 2023-08-15 03:01
我的验证规则:
仅接受5个数字,仅接受2个小数
到目前为止,我已经知道了,但问题是stil接受的位数超过2个,例如:
$ 99,999.00123445(不好)
$ 99,999.99(确定)
我将数字从左到右设置为例如:$ 0.01,$ 0.19,$ 1.99
怎么了?
@IBaction func efectivoTextChanged(_ sender: UITextField) {
guard let text = sender.text else{
return
}
let array = text.compactMap({
Int(String($0))
})
let num = Double(array.reduce(0,{($0 * 10) + $1})) / 100
if num > 99999.99 {
return
}
let num2 = num * 100 / 100
efectivoTextField.text = currencyFormatter.string(from: Nsnumber(value: num2))
let updatedText = efectivoTextField.text!
updateEfect(updatedText)
}
您不能使用Double
来计算货币。 Double
以2为基数(二进制),因此“小数点后两位”不适用。 Double
不能精确地表示1/10
,而不能精确地以10进制(十进制)来表示1/3
。
如果要以10为基数工作(需要货币),则需要使用Decimal
或Int
。使用Int
,您将使用cents
,然后在末尾格式化该值。