将以下代码粘贴到游乐场中:
5.0 / 100
func test(anything: Float) -> Float {
return anything / 100
}
test(5.0)
第一行应按预期返回0.05。功能测试返回0.0500000007450581。为什么呢?
答案 0 :(得分:3)
它与功能无关。您的第一个示例是使用类型Double
,它通过使用64位更精确地表示浮点数。如果您要将第二个示例更改为:
func test(anything: Double) -> Double {
return anything / 100
}
test(5.0)
你会得到你期望的结果。 Float
仅使用32位数据,因此它提供的数字表示不太精确。此外,浮点数存储为二进制值,并且通常仅是基数10表示的近似值。这就是为0.05
存储为0.0500000007450581
时Float
显示为{{1}}的原因。