Casting CGFloat to Float in Swift Casting CGFloat to Float in Swift swift swift

Casting CGFloat to Float in Swift


You can use the Float() initializer:

let cgFloat: CGFloat = 3.14159let someFloat = Float(cgFloat)


If you are as lazy as I am, in an Extensions.swift define the following:

extension Int {  var f: CGFloat { return CGFloat(self) }}extension Float {  var f: CGFloat { return CGFloat(self) }}extension Double {  var f: CGFloat { return CGFloat(self) }}extension CGFloat {  var swf: Float { return Float(self) }}

Then you can do:

var someCGFloatFromFloat = 1.3.fvar someCGFloatFromInt = 2.fvar someFloatFromCGFloat = someCGFloatFromFloat.swf


Usually, the best solution is to keep the type and use CGFloat, even in Swift. That's because CGFloat has different size on 32bit and 64bit machines.

Keyword as can be used only for dynamic casting (for subclasses), e.g.

class A {}class B : A {}var a: A = B()var b: B = a as B

However, Double, Int, Float etc are not subclasses of each other, therefore to "cast" you have to create a new instance, e.g.

var d: Double = 2.0var f: Float = Float(d) //this is an initialiser call, not a castvar i: Int = Int(d) //this is an initialiser call, not a cast