2

誰かがこれがタイトルに記載されているエラーを引き起こす理由を説明できますか?

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

ありがとう

4

2 に答える 2

3

fabs()double(64ビット)を返しますCGFloatが、(32ビット)として定義されていますfloatdouble一般的には無害です。値を使用して計算を実行するのは通常、少なくとも値を使用するのと同じくらい速いため、私は個人的にコンパイラの警告を無効にすることさえしfloatます。

于 2010-12-09T15:39:49.350 に答える
2

より良い答えはを使用すること#include <tgmath.h>です。そのヘッダーは、どのパラメーターサイズでも正しい関数を呼び出す「適応」関数を定義します。

そのヘッダーが含まれてfabsいると、その警告を受け取らずに簡単に呼び出すことができます(間違った関数の使用による精度の低下を心配する必要もありません)。

于 2013-03-11T09:18:35.680 に答える