Question

Quelqu'un peut-il expliquer pourquoi cela provoque l'erreur indiqué dans le titre?

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

Merci

Était-ce utile?

La solution

fabs() renvoie un double (64 bits), mais CGFloat est défini comme étant un float (32 bits). Il est généralement inoffensif - Personnellement, je même désactiver l'avertissement du compilateur, comme effectuer des calculs en utilisant des valeurs de double est généralement au moins aussi rapide que les valeurs de float

.

Autres conseils

Une meilleure réponse est d'utiliser #include <tgmath.h>. Qui définit les fonctions d'en-tête de « adaptatifs » qui appellent la fonction correcte sur la taille selon des paramètres.

Avec cet en-tête inclus, vous pouvez simplement appeler fabs sans obtenir cet avertissement (ni se soucier de la perte de précision causée par l'utilisation de la mauvaise fonction).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top