2

有人可以解释为什么这会导致标题中所述的错误吗?

CGFloat dx = fabs(lastPoint.x - currentPoint.x);

谢谢

4

2 回答 2

3

fabs()返回一个double(64 位),但CGFloat被定义为一个float(32 位)。它通常是无害的——我个人甚至会禁用编译器警告,因为使用double值执行计算通常至少与使用值一样快float

于 2010-12-09T15:39:49.350 回答
2

更好的答案是使用#include <tgmath.h>. 该标头定义了“自适应”函数,可以根据任何参数大小调用正确的函数。

包含该标头后,您可以简单地调用fabs而不会收到该警告(也不担心由于使用错误函数而导致精度损失)。

于 2013-03-11T09:18:35.680 回答