Так и должно быть, т.к. по стандарту IEEE 754 тип float имеет следующее представление:
1 бит - знак
8 бит - порядок
23 бита - мантисса
Для представления точного значения Вашего числа (-362.0927) не хватает разрядности мантиссы. Попробуйте в Visual C++ следующий код:
Код
float f = -362.0927;
printf("%f\n", f);
результат будет: -362.092712
Если Вы хотите иметь более точное представление, то используйте double:
1 бит - знак
11 бит - порядок
52 бита - мантисса