我试图将用户(通过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
我不敢相信我是第一个遇到此问题的人,但是我在Stackoverflow上找不到任何东西-这到底是怎么回事?我该怎么做才能阻止它? (存储1.179999并在需要时进行四舍五入似乎是一种技巧)
任何收到建议的人