除法在函数中返回不同的东西

时间:2014-09-23 03:10:33

标签: swift

将以下代码粘贴到游乐场中:

5.0 / 100

func test(anything: Float) -> Float {
    return anything / 100
}

test(5.0)

第一行应按预期返回0.05。功能测试返回0.0500000007450581。为什么呢?

1 个答案:

答案 0 :(得分:3)

它与功能无关。您的第一个示例是使用类型Double,它通过使用64位更精确地表示浮点数。如果您要将第二个示例更改为:

func test(anything: Double) -> Double {
    return anything / 100
}

test(5.0)

你会得到你期望的结果。 Float仅使用32位数据,因此它提供的数字表示不太精确。此外,浮点数存储为二进制值,并且通常仅是基数10表示的近似值。这就是为0.05存储为0.0500000007450581Float显示为{{1}}的原因。