我注意到一些浮点转换不同。 This question helps me about floating points但是仍然不知道为什么会这样?我在调试模式中添加了两个关于示例代码的屏幕截图。示例值:7.37和9.37。快速而迅速地使用它IEEE 754 floating point standard请解释它是如何发生的?转换的结局如何不同?
if let text = textField.text {
if let number = formatter.number(from: text) {
return Double(number)
}
return nil
}
答案 0 :(得分:1)
Double
浮点数存储在base-2中,并不能完全代表所有小数。
在这种情况下,7.37和9.37四舍五入到最接近的浮点数,分别为7.37000000000000010658141036401502788066864013671875和9.3699999999999992184029906638897955417633056640625。
当然,这种十进制表示对于一般用途来说太难以处理,因此编程语言通常会打印较短的近似十进制表示。
是两个受欢迎的选择7.37
和9.37
)。这些似乎与您看到的2个调试输出值相对应。