2014-09-23 101 views
0

以下代碼粘貼到一個遊樂場:司返回不同的函數的東西

5.0/100 

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

test(5.0) 

第一行應返回0.05按預期方式。函數測試返回0.0500000007450581。爲什麼?

回答

3

它與功能無關。你的第一個例子是使用類型Double,它使用64位更精確地表示浮點數。如果您要將第二個示例更改爲:

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

test(5.0) 

您會得到您期望的結果。 Float只使用32位數據,因此它提供了一個不太精確的數字表示。而且,浮點數以二進制值的形式存儲,並且通常只是基數10表示的近似值。這就是爲什麼當存儲爲Float0.05顯示爲0.0500000007450581

相關問題