Perché questo codice a volte tornare NaN?
Domanda
Questa ritorna spesso NAN ( "non un numero") a seconda di ingresso:
#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI / 2.0f));
}
Ho provato a fare PI alcune cifre piccole per vedere se che avrebbe aiutato. Niente da fare. Poi ho pensato che potrebbe essere una mancata corrispondenza tipo di dati, ma float e GLfloat sembra essere equivalente:
gl.h
typedef float GLfloat;
math.h
extern float cosf( float );
E 'questo un problema di casting?
Soluzione
ho il sospetto che una delle seguenti è a piedi:
- il tuo valore di input per
ratio
non può essere quello che ci si aspetta che sia, eratio
sé è forseNaN
- l'
cosf
che si sta chiamando non è quella inmath.h
In caso contrario, non sembra essere qualcosa di sbagliato con la vostra espressione.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow