Вопрос
Почему в C++ нет заголовка <cstdfloat> для чисел с плавающей запятой, как в <cstdint> для целых чисел?
РЕДАКТИРОВАТЬ :
Под <cstdfloat> я подразумеваю заголовок, который предоставляет определения типов для float и double.Очень похоже на qreal typedef в Qt.Надеюсь, мой вопрос теперь ясен.
Решение
Часто приложению требуется ровно 16 бит для целого числа, скажем, для битового поля, но иметь ровно 16 бит для числа с плавающей запятой бесполезно.Манипулировать битами целого числа легко, поэтому хорошо иметь ровно 16 бит.Манипулирование битами числа с плавающей запятой требует приведения его к целому числу, что делает float16
тип довольно посторонний.
Точно так же полезно иметь целочисленный тип, способный хранить указатели (а также выполнять математические операции), но кому когда-либо понадобится преобразовать значение указателя в значение с плавающей запятой, затем выполнить над ним математические операции с плавающей запятой, а затем преобразовать его обратно на указатель?
Дело в том, что большая часть функционала в stdint.h
(или cstdint
для C++, за исключением того, что stdint.h
является заголовком C99 и технически не является частью C++) не применяется к значениям с плавающей запятой.
Другие советы
Возможно, вы ищете <float.h>
и его брат C++ <cfloat>
вместо?