我遇到了以下代码在项目中无法按预期运行而在Playground中可以正常运行的情况。
strtof("0.9", nil) //expected to return 0.9
Float("0.9")! //expected to return 0.9
这是我在Project与Playground中执行相同代码时的屏幕截图。
XCode的控制台:
游乐场:
这种区别是故意的吗?
答案 0 :(得分:0)
出现问题是因为十进制0.9不能表示为32位浮点值(在Swift中为Float
)。最接近的值恰好是0.899999976。
调试器(Xcode的控制台)和Playground都计算出完全相同的值。
只是产生输出的方式不同。调试器显示所有有效数字时,操场似乎将结果取整。