J’ai une propriété CGFloat et parfois j’obtiens une valeur de retour de type Float64 ou également de type Float32. Puis-je stocker les deux en toute sécurité sur CGFloat?
À partir des en-têtes:
// CGBase.h typedef float CGFloat; // MacTypes.h typedef float Float32; typedef double Float64;
Donc, CGFloat
et Float32
sont tous les deux des float
alors que Float64
est un double
, vous Float64
donc de la précision.
(Modifier pour préciser: il s’agit de systèmes 32 bits tels que l’iPhone. Si vous construisez pour un système 64 bits, CGFloat
est défini comme un double
.)
Il est recommandé de toujours essayer de stocker les valeurs scalaires dans le même type que vous les avez reçues, car la précision des types scalaires change avec le matériel.
Il n’est pas toujours garanti que CGFloat ait la même taille sur tous les matériels actuels et futurs. Si vous le remplacez par un autre type ou si vous l’utilisez pour stocker un autre type, votre code est cassé quelque part par la suite.
Vous pourriez gagner ou perdre en précision lors de la sortie d’un nouvel iPhone / iPad ou le code risquerait de se briser si vous tentiez de le transférer vers un Mac.