qfloat16 类
提供 16 位浮点数支持。 更多...
头文件 | #include <QFloat16> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
此类是 部分可比较的.
此类与 float、double、long double、qint8、quint8、qint16、quint16、qint32、quint32、long、unsigned long、qint64、quint64 是 部分可比较的。
此类与 qint128 和 quint128 是 部分可比较的。
与 128 位整数类型的比较仅在 Qt 提供这些类型时才受支持。
公开函数
相关非成员
void | qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len) |
void | qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len) |
int | qFpClassify(qfloat16 val) |
bool | qFuzzyCompare(qfloat16 p1, qfloat16 p2) |
(自 6.5.3) size_t | qHash(qfloat16 key, size_t seed = 0) |
bool | qIsFinite(qfloat16 f) |
bool | qIsInf(qfloat16 f) |
bool | qIsNaN(qfloat16 f) |
qint64 | qRound64(qfloat16 value) |
int | qRound(qfloat16 value) |
QDataStream & | operator<<(QDataStream &ds, qfloat16 f) |
QDataStream & | operator>>(QDataStream &ds, qfloat16 &f) |
详细描述
qfloat16
类提供对半精度(16位)浮点数据的支持。它完全符合IEEE 754作为存储类型。这意味着对一个 qfloat16
实例的任何算术运算都会先将其值转换为 float
。这种从和到 float
的转换尽可能由硬件执行,但在不支持半精度的处理器上,转换是通过一系列查找表操作实现的。
qfloat16
应当被视为POD(基本数据类型)类型。因此,除了声明它支持所有与浮点类型相关的算术运算符外,不需要对支持的运算进行详细阐述。
注意:在x86和x86-64平台上,要获取硬件加速的转换,必须启用F16C或AVX2编译,或者使用 qFloatToFloat16() 和 qFloatFromFloat16() 函数,这些函数将在运行时检测F16C。
成员函数文档
[显式 noexcept, 自Qt 6.1开始]
qfloat16::qfloat16(Qt::Initialization)
构造一个 qfloat16 而不初始化其值。
此函数自Qt 6.1开始被引入。
[noexcept]
qfloat16 qfloat16::copySign(qfloat16 sign) const
返回一个 qfloat16
,它的符号与 sign 相同,其余部分从本 qfloat16
取得。它是qfloat16的 std::copysign
等价函数。
[constexpr noexcept]
bool qfloat16::isNormal() const
如果此 qfloat16
值是有限且为正常形式,则返回 true
。
另请参阅:qFpClassify()。
相关非成员
[noexcept]
void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)
将 len 个 qfloat16 从 in 转换为浮点数并存储在 out 中。两者 in 和 out 都必须有 len 个已分配的条目。
此函数比逐个转换值更快,并且将在x86和x86-64硬件上执行F16C动态检测。
[noexcept]
void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)
将 len 个浮点数从 in 转换为 qfloat16 并存储在 out 中。两者 in 和 out 都必须有 len 个已分配的条目。
此函数比逐个转换值更快,并且将在x86和x86-64硬件上执行F16C动态检测。
[noexcept]
int qFpClassify(qfloat16 val)
此函数重载了 qFpClassify(float)。
返回 val 的浮点类。
[noexcept]
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)
此函数重载了 qFuzzyCompare(float, float)。
比较浮点数值 p1 和 p2,如果它们被认为是相等的,则返回 true
,否则返回 false
。
这两个数以相对方式比较,其中精确性在数值较小时更强。
[noexcept, since 6.5.3]
size_t qHash(qfloat16 key, size_t seed = 0)
返回 key 的哈希值,使用 seed 对计算进行初始化。
注意: 在 Qt 6.5 版本之前,此操作由 qHash(float) 重载提供。在 Qt 6.5.0 到 6.5.2 版本中,该功能以各种方式损坏。从 Qt 6.5.3 和 6.6 版本开始,此重载恢复了 Qt 6.4 的行为。
此功能是在 Qt 6.5.3 中引入的。
[noexcept]
bool qIsFinite(qfloat16 f)
此函数重载了 qIsFinite(float)。
如果 qfloat16
的 f 是有限数,则返回 true。
[noexcept]
bool qIsInf(qfloat16 f)
此函数重载了 qIsInf(float)。
如果 qfloat16
的 f 等价于无穷大,则返回 true。
[noexcept]
bool qIsNaN(qfloat16 f)
此函数重载了 qIsNaN(float)。
如果 qfloat16
的 f 不是数字 (NaN),则返回 true。
[noexcept]
qint64 qRound64(qfloat16 value)
此函数重载了 qRound64(float)。
将 value 四舍五入到最接近的 64 位整数。
[noexcept]
int qRound(qfloat16 value)
此函数重载了 qRound(float)。
将 value 四舍五入到最接近的整数。
QDataStream &operator<<(QDataStream &ds, qfloat16 f)
将浮点数 f 写入流 ds,使用标准 IEEE 754 格式。返回对流的引用。
注意: 在 Qt 6.3 之前的版本中,这是 QDataStream 的成员函数。
QDataStream &operator>>(QDataStream &ds, qfloat16 &f)
从流 ds 读取一个浮点数到 f,使用标准 IEEE 754 格式。返回对流的引用。
注意: 在 Qt 6.3 之前的版本中,这是 QDataStream 的成员函数。
© 2024 Qt公司 Ltd。本文件中的文档贡献版权属于各自的拥有者。此处提供的文档根据由自由软件基金会出版的《GNU自由文档许可证》(http://www.gnu.org/licenses/fdl.html)第1.3版许可。