誰かがこれがタイトルに記載されているエラーを引き起こす理由を説明できますか?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
ありがとう
誰かがこれがタイトルに記載されているエラーを引き起こす理由を説明できますか?
CGFloat dx = fabs(lastPoint.x - currentPoint.x);
ありがとう
fabs()
double
(64ビット)を返しますCGFloat
が、(32ビット)として定義されていますfloat
。double
一般的には無害です。値を使用して計算を実行するのは通常、少なくとも値を使用するのと同じくらい速いため、私は個人的にコンパイラの警告を無効にすることさえしfloat
ます。
より良い答えはを使用すること#include <tgmath.h>
です。そのヘッダーは、どのパラメーターサイズでも正しい関数を呼び出す「適応」関数を定義します。
そのヘッダーが含まれてfabs
いると、その警告を受け取らずに簡単に呼び出すことができます(間違った関数の使用による精度の低下を心配する必要もありません)。