Domanda

Qualcuno può spiegare perché questo causa l'errore indicato nel titolo?

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

Grazie

È stato utile?

Soluzione

fabs() restituisce un double (64-bit), ma CGFloat è definito come un float (32-bit). E 'generalmente innocui - io personalmente anche disattivare l'avviso del compilatore, come l'esecuzione di calcoli utilizzando i valori double è tipicamente almeno il più velocemente utilizzando i valori float

.

Altri suggerimenti

Una risposta migliore è quella di utilizzare #include <tgmath.h>. Che definisce intestazione funzioni "adattive" che chiamano la funzione corretta qualsiasi dimensione parametro.

Con tale intestazione incluso, si può semplicemente chiamare fabs senza ottenere che l'avvertimento (né preoccuparsi di perdita di precisione causati dall'uso della funzione di sbagliato).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top