типом данных qfloat16, просьба помочь прояснить ситуацию:
qfloat16 val = 540 / 1000.0f; // можно и так: qfloat16 val = qfloat16(540) / qfloat16(1000); а можно и так: qfloat16 val = qfloat16(540.0f) / qfloat16(1000.0f); это не влияет на результат
std::cout << std::numeric_limits<qfloat16>::max() << std::endl;
std::cout << std::numeric_limits<qfloat16>::min() << std::endl;
std::cout << val << std::endl;
выхлоп - сплошная дичь(можно заменить штатный std::cout на родной для кт qDebug(), на выхлоп это не повлияет):
0
0
0.539551
почему min/max в нулях? Интересно, какой вообще max/min может быть у 16 битного флота
540. / 1000.0f
qfloat16 - это класс
min = qfloat16(Wrap(0x400)); max = qfloat16(Wrap(0x7bff)); и да, стоит заметить, что если хочется минимальное (которое там -многобукаф) - следует юзать lowest, а не min src: https://code.woboq.org/qt5/qtbase/src/corelib/global/qfloat16.h.html#_ZN8qfloat1610_limit_minEv
65504 6.10352e-05 нормально выдает
Проблема может быть с cout. Он может тлочность обрезать. Попробуй домножить на миллион например Также флаги оптимизации сильно на это влияют
Обсуждают сегодня