我需要将值存储为Float
,但是源数据是CGFloat
:
let myFloat : Float = myRect.origin.x
但这会导致编译器错误:“ NSNumber”不是子类型“ Float”
因此,如果我明确地将其像这样进行投射:
let myFloat : Float = myRect.origin.x as Float
但这反过来导致编译器错误:'无法将表达式的类型'Float'转换为'Float'
请问满足编译器要求的正确方法是什么?
8
请注意,在64位系统上,将CGFloat强制转换为Float会降低精度– CGFloat在64位系统上为64位,在32位系统上为32位,Float始终为32位。为避免这种情况,可以使用Double而不是Float。
—
卢卡斯2014年
如果您在Xcode中深入研究CGFloat并查看其定义位置,则将看到它被定义为32位体系结构上的浮点型和64位体系结构上的双精度型。
—
jcpennypincher 2014年