Могу ли я безопасно использовать CGFloat для хранения значений Float64 или Float32? - PullRequest
0 голосов
/ 02 мая 2010

У меня есть свойство CGFloat, и иногда я получаю возвращаемое значение типа Float64 или также типа Float32. Могу ли я безопасно хранить оба к CGFloat?

Ответы [ 2 ]

2 голосов
/ 02 мая 2010

Из заголовков:

// CGBase.h
typedef float CGFloat;

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

Итак, CGFloat и Float32 равны float с, а Float64 - double, поэтому вы потеряете точность.

(Изменить, чтобы уточнить: это для 32-битных систем, таких как iPhone. Если вы используете 64-битную версию, CGFloat определяется как double.)

1 голос
/ 02 мая 2010

Рекомендуется всегда пытаться хранить скалярные значения в том же типе, в котором вы их получили, потому что точность скалярных типов меняется в зависимости от аппаратного обеспечения.

CGFloat не всегда гарантирует одинаковый размер на всем текущем и будущем оборудовании. Если вы замените его другим типом или используете его для хранения другого типа, ваш код сломался где-то в будущем.

Вы можете получить или потерять точность, когда выйдет новый iPhone / iPad, или код может сломаться, если вы попытаетесь перенести его на Mac.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...