と同様に、スウィフトの除算演算子のデフォルトは除算を整数へ、そう:浮動小数点除算のための迅速な変換はなぜ機能しますか?
let n = 1/2
print(n) // 0
あなたは浮動小数点除算をしたい場合は、あなたが他のほとんどの言語と同様に、ここでも
let n1 = 1.0/2
let n2 = 1/2.0
let n3 = Double(1)/2
let n4 = 1/Double(2)
print(n1) // 0.5
print(n2) // 0.5
print(n3) // 0.5
print(n4) // 0.5
をしなければならない、あなた全体の動作をキャストすることはできません:迅速1及び2の整数除算を実行するため起こる
let n5 = Double(1/2)
print(n5) // 0.0
(1/2
)、0を取得してからDouble
にキャストしようとすると、効果的に0.0が返されます。
私は次の作品を理由として興味津々:
let n6 = (1/2) as Double
print(n6) // 0.5
私はこのように感じるがDouble(1/2)
と同じ結果を生成しなければなりません。それはなぜですか?
'Double(1/2)'は*キャストされません。 'Int'から' Double'への変換*です。 '(1/2)as Double'のような変換は行われません。整数リテラルは単純にdoubleと推定されます。 'https://stackoverflow.com/q/28813516/2976878 – Hamish
[ストレンジ・スウィフト番号の型キャスト](https://stackoverflow.com/questions/28813516/strange-swift-numbers-type-casting)の可能性のある重複 –