Вопрос

Почему в 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> вместо?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top