我遇到了一种情况,以下代码在项目中无法按预期工作,但在 Playground 中工作正常。
strtof("0.9", nil) //expected to return 0.9
Float("0.9")! //expected to return 0.9
以下是我在项目与 Playground 中执行相同代码时的屏幕截图。
XCode 控制台:
Playground :
这种差异是故意的吗?
最佳答案
出现此问题的原因是十进制 0.9 无法表示为 32 位浮点值(Swift 中的Float
)。最接近的值恰好是 0.899999976。
调试器(Xcode 的控制台)和 Playground 都计算出完全相同的值。
只是生成输出的方式有所不同。当调试器显示所有有效数字时, Playground 似乎对结果进行四舍五入。
关于swift - 在 Swift 4 中,将 String 值类型转换为 Float 值的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51933697/