有人可以解释为什么会导致标题中所述的错误吗?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
由于
答案 0 :(得分:3)
fabs()
返回double
(64位),但CGFloat
被定义为float
(32位)。它通常是无害的 - 我个人甚至会禁用编译器警告,因为使用double
值执行计算通常至少与使用float
值一样快。
答案 1 :(得分:2)
更好的答案是使用#include <tgmath.h>
。该标题定义了“自适应”函数,可以在任何参数大小上调用正确的函数。
如果包含该标题,您只需调用fabs
即可获得该警告(也不必担心因使用错误的函数而导致精度损失)。