[英]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;
因此CGFloat
和Float32
都是float
而Float64
是double
所以您會失去精度。
(編輯以澄清:這適用於32位系統(例如iPhone)。如果要構建64位,則CGFloat
定義為double
。)
最佳做法是始終嘗試將標量值存儲在與接收它們相同的類型中,因為標量類型的精度會隨硬件而變化。
在當前和將來的所有硬件上,並不總是保證CGFloat的大小相同。 如果您用另一種類型替代它或使用它來存儲另一種類型,那么您的代碼就會中斷。
當新的iPhone / iPad推出時,您可能會獲得或失去精度,或者如果嘗試將其移植到Mac,則代碼可能會中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.