Warum manchmal Code NaN zurückkehren?
Frage
Diese oft gibt NAN ( "Not A Number") in Abhängigkeit vom Eingang:
#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI / 2.0f));
}
Ich habe versucht, PI machen ein paar Ziffern kleiner, um zu sehen, ob das helfen würde. Kein Würfel. Dann dachte ich, es könnte eine Datentypkonflikt, aber float und GLfloat zu sein scheint äquivalent:
gl.h
typedef float GLfloat;
math.h
extern float cosf( float );
Ist das ein Casting Problem?
Lösung
Ich vermute, dass eine der folgenden ist zu Fuß:
- Ihr Eingangswert
ratio
kann nicht sein, was Sie erwarten, dass es sein, undratio
selbst ist möglicherweiseNaN
- die
cosf
, dass Sie anrufen ist nicht derjenige inmath.h
Ansonsten gibt scheint nichts falsch mit Ihrem Ausdruck zu sein.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow