从UITextField接受用户输入货币值的正确方法是什么?

时间:2019-07-18 20:12:52

标签: ios swift uitextfield double

我试图将用户(通过UITextField)输入的文本转换为Double,以便存储在Core Data中。问题是转换后的值不正确,例如: 用户输入:1.18 双精度值:1.17999999999999

我尝试了许多不同的方法,例如重铸和使用格式化程序,但是结果是相同的。

func textFieldDidEndEditing(_ textField: UITextField) {
        print(textField.text) // Prints 1.18

        guard let inputAmount = textField.text else {
            return
        }

        let inputDouble = Utils.doubleFromString(inputAmount)
        print(inputDouble) // Prints 1.18, but is stored as 1.17999999999

        let inputDouble2 = Double(inputAmount)
        print(inputDouble2) // Prints 1.18, but is stored as 1.17999999999

Screenshot in Debug

我不敢相信我是第一个遇到此问题的人,但是我在Stackoverflow上找不到任何东西-这到底是怎么回事?我该怎么做才能阻止它? (存储1.179999并在需要时进行四舍五入似乎是一种技巧)

任何收到建议的人

0 个答案:

没有答案