簡體   English   中英

我可以安全地使用CGFloat來保存Float64或Float32值嗎?

[英]Can I safely use CGFloat to hold Float64 or Float32 values?

我有一個CGFloat屬性,有時我會得到Float64類型或Float32類型的返回值。 我可以將兩者安全地存儲到CGFloat嗎?

從標題:

// CGBase.h
typedef float CGFloat;

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

因此CGFloatFloat32都是floatFloat64double所以您會失去精度。

(編輯以澄清:這適用於32位系統(例如iPhone)。如果要構建64位,則CGFloat定義為double 。)

最佳做法是始終嘗試將標量值存儲在與接收它們相同的類型中,因為標量類型的精度會隨硬件而變化。

在當前和將來的所有硬件上,並不總是保證CGFloat的大小相同。 如果您用另一種類型替代它或使用它來存儲另一種類型,那么您的代碼就會中斷。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM