Более старые ответы верны. Только для моего 2 ¢, вот моя реализация:
@implementation NSNumber (TypeConversion)
- (CGFloat)cgFloatValue
{
#if CGFLOAT_IS_DOUBLE
return self.doubleValue;
#else
return self.floatValue;
#endif
}
@end
Это зависит от определения CGFLOAT_IS_DOUBLE
в CGBase.h для Objective C или CoreGraphics.h для Swift:
// Don't write this code; it's already included in Foundation :)
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
#else
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
#endif
typedef CGFLOAT_TYPE CGFloat;
#define CGFLOAT_DEFINED 1