Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
有人可以解释为什么这会导致标题中所述的错误吗?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
谢谢
fabs()返回一个double(64 位),但CGFloat被定义为一个float(32 位)。它通常是无害的——我个人甚至会禁用编译器警告,因为使用double值执行计算通常至少与使用值一样快float。
fabs()
double
CGFloat
float
更好的答案是使用#include <tgmath.h>. 该标头定义了“自适应”函数,可以根据任何参数大小调用正确的函数。
#include <tgmath.h>
包含该标头后,您可以简单地调用fabs而不会收到该警告(也不担心由于使用错误函数而导致精度损失)。
fabs