implicit conversion shortens 64 bit to 32 bit
-
10-10-2019 - |
Question
Can someone explain why this causes the error stated in the title?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
Thanks
Solution
fabs()
returns a double
(64-bit), but CGFloat
is defined to be a float
(32-bit). It's generally harmless – I personally would even disable the compiler warning, as performing calculations using double
values is typically at least as fast as using float
values.
OTHER TIPS
A better answer is to use #include <tgmath.h>
. That header defines "adaptive" functions that call the correct function on whichever parameter size.
With that header included, you can simply call fabs
without getting that warning (nor worrying about loss of precision caused by the use of the wrong function).
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow