値をとして保存する必要がありますFloat
が、ソースデータはCGFloat
:
let myFloat : Float = myRect.origin.x
しかし、これによりコンパイラエラーが発生します。「NSNumber」はサブタイプ「Float」ではありません
だから私が明示的にこのようにキャストすると:
let myFloat : Float = myRect.origin.x as Float
しかし、これによりコンパイラエラーが発生します: '式のタイプ'フロート 'を'フロートに変換できません '
これを行い、コンパイラーを満足させる正しい方法は何ですか?
8
64ビットシステムでは、CGFloatをFloatにキャストすると精度が失われます。CGFloatは64ビットシステムでは64ビット、32ビットシステムでは32ビットであり、Floatは常に32ビットです。これを回避するには、Floatの代わりにDoubleを使用します。
—
Lukas 2014年
XcodeでCGFloatをドリルダウンし、それが定義されている場所を確認すると、32ビットアーキテクチャではフロートとして、64ビットアーキテクチャではダブルとしてtypedefされていることがわかります。
—
jcpennypincher 2014年