Почему этот код иногда возвращает NAN?
Вопрос
Это часто возвращает NAN («не число») в зависимости от входа:
#define PI 3.1415f
GLfloat sineEaseIn(GLfloat ratio) {
return 1.0f-cosf(ratio * (PI / 2.0f));
}
Я пытался сделать PI несколько цифр, чтобы увидеть, если бы это поможет. Нет кости. Тогда я думал, что это может быть несоответствием данных типа данных, но плавать и Glfloat. кажется, эквивалентно:
гл.м.
typedef float GLfloat;
математика
extern float cosf( float );
Это проблема литья?
Решение
Я подозреваю, что одно из следующих действий:
- Ваше входное значение для
ratio
не может быть то, что вы ожидаете, иratio
Сама возможноNaN
- то
cosf
что вы звонили, не тот вmath.h
В противном случае, похоже, нет ничего плохого в вашем выражении.
Не связан с StackOverflow