2016-06-01 9 views
3

iPhoneセンサーから取得したdoubleをfloatに変換しようとしています。残念ながら、私はそうするための組み込み機能に関するリソースを見つけることはできません。SwiftでDoubleをFloatに変換する適切な方法はありますか?

私はそうのようなdoubleからfloatにfloatまたはキャストを初期化する場合:

let roll = (Float)(attitude!.roll) 
let pitch = (Float)(attitude!.pitch) 

それとも

let roll = Float(attitude!.roll) 
let pitch = Float(attitude!.pitch) 

オリジナルのダブル値がまだ正しく変換されません。 たとえば、9.436222および27.895268はそれぞれ0.486864および0.164693になります。より大きい10進値を保持するDoubleからFloatにキャストする適切な方法はありますか?

+5

あなたの2番目のコードスニペットは完全にうまくいくようです - あなたのコードに間違いがあります! – luk2302

+2

私は簡単な遊び場を実行して、リストアップした正確な数値で浮動小数点数に変換し、正しい値を取得できます。精度の低下がありますが、間違った値が表示されていません。 – keithbhunter

+0

これは、モーションマネージャで '.attitude'を呼び出すとロール、ピッチ、ヨーを度で表示しますが、' .roll'や '.pitch'や' .yaw'を呼び出すと、 '.attitude'の度数で、ラジアン単位の個々の成分を与えます! – zavtra

答えて

12
guard let unwrappedAttitude = attitude else { 
    fatalError("attitude was nil!") 
} 

let roll = Float(unwrappedAttitude.roll) 
let pitch = Float(unwrappedAttitude.pitch) 

は行くべき方法です。

関連する問題