Если вы хотите знать, является ли ваш float
32-разрядным IEEE-типом, проверьте std::numeric_limits<float>::is_iec559
. Это константа времени компиляции, а не функция.
Если вы хотите быть более пуленепробиваемым, проверьте также std::numeric_limits<float>::digits
, чтобы убедиться, что они не скрытно используют стандартную двойную точность IEEE для float
. Это должно быть 24.
Когда дело доходит до long double
, более важно проверить digits
, так как есть несколько форматов IEEE, которые могут быть разумными: 128 бит (цифры = 113) или 80 бит (цифры = 64).
Неправильно иметь float32_t
как таковой, потому что вы, как правило, хотите использовать аппаратные средства с плавающей запятой, если они доступны, и не отказываться от реализации программного обеспечения.
Зачем вам это нужно? – AraK
Pietro, похоже, что вы не можете понять, как работают поплавки. –
Вам нужно что-то подобное, когда у вас есть структура данных с плавающей точкой, и вы также хотите точно знать, что это за размер. – mob