по какой-то причине, я получаю следующее предупреждениеплавать, чтобы удвоить неверное истолкование ??? г ++
filename.cpp:99:53: warning: narrowing conversion of ‘sin(((double)theta))’ from ‘double’ to ‘float’ inside { } [-Wnarrowing]
filename.cpp:99:66: warning: narrowing conversion of ‘cos(((double)theta))’ from ‘double’ to ‘float’ inside { } [-Wnarrowing]
который делает это звучит, как он пытается использовать «двойные Cos (двойные)» и т.д., а не «с плавающей точкой Cos (с плавающей точкой)» и т.д. Я все время пытаюсь придумать больше способов предложить это компилятору, но я никуда не уйду. Что я могу сделать, чтобы решить эту проблему?
void foo(float theta)
{
theta = (float)M_PI*theta/180.0f;
MyClass variable = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, cos(theta), -sin(theta), 0.0f,
0.0f, sin(theta), cos(theta), 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
bob = variable;
}
Благодаря
Edit: изменить его на это делает предупреждения уйти, но я все еще достаточно знать, что проблема
float C = cos(theta), S = sin(theta);
MyClass variable = { 1.0f, 0.0f, 0.0f, 0.0f,
0.0f, C, -S, 0.0f,
0.0f, S, C, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f };
Можете ли вы использовать 'sinf' и' cosf'? – Synxis