Trying to do arithmetic in a function that returns `CGFloat, I get an error:
Couldn't find overload for '/' that accepts supplied arguments
func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat
{
return (M_PI * (x) / 180.0) // error is here.
}
Has anyone else seen this type of issue?
This is a problem with double
to float
conversion.
On a 64-bit machine, CGFloat
is defined as double
and you will compile it without problems because M_PI
and x
are both doubles.
On a 32-bit machine, CGFloat
is a float
but M_PI
is still a double. Unfortunately, there are no implicit casts in Swift, so you have to cast explicitly:
return (CGFloat(M_PI) * (x) / 180.0)
The type for 180.0
literal is inferred.
In Swift 3
M_PI
is deprecated, use CGFloat.pi
instead:
return (x * .pi / 180.0)