2010-05-02 28 views

回答

2

從標題:

// CGBase.h 
typedef float CGFloat; 

// MacTypes.h 
typedef float    Float32; 
typedef double    Float64; 

所以CGFloatFloat32都是float s,而Float64double,所以你會失去精度。

(編輯澄清:這是32位系統(如iPhone)如果你正在爲64位,CGFloat被定義爲double

1

它總是試圖存儲標量值的最佳實踐與您收到的類型相同,因爲標量類型的精度隨硬件而變化。

在所有當前和未來的硬件上,CGFloat並不總是保證大小相同。如果你用另一種類型替代它,或者用它來存儲另一種類型,你的代碼會在某個地方停下來。

當新的iPhone/iPad出來或者如果您嘗試將其移植到Mac時代碼可能會中斷,您可能會獲得或失去精度。

相關問題