qfloat16 Class

提供 16 位浮点运算支持。更多

头文件: #include <QFloat16>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

该类具有部分可比性

该类与 float、double 、long double、qint8quint8qint16quint16qint32quint32 、long、unsigned long、qint64quint64部分具有可比性

该类与qint128quint128 具有部分可比性

只有当 Qt 提供 128 位积分类型时,才支持与这些类型进行比较。

公共函数

(since 6.1) qfloat16(Qt::Initialization)
qfloat16 copySign(qfloat16 sign) const
bool isNormal() const
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)
(since 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。

成员函数文档

[explicit noexcept, since 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)

in 中的len qfloat16 转换为浮点数,并将其存储在out 中。inout 都必须有len 分配的条目。

该函数比逐个转换数值更快,并能在 x86 和 x86-64 硬件上进行运行时 F16C 检测。

[noexcept] void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)

in 中的len 浮点数转换为 qfloat16,并将其存储到out 中。inout 都必须有len 分配的条目。

该函数比逐个转换数值更快,并能在 x86 和 x86-64 硬件上进行运行时 F16C 检测。

[noexcept] int qFpClassify(qfloat16 val)

该函数重载qFpClassify(float)。

返回val 的浮点类。

[noexcept] bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)

该函数重载了qFuzzyCompare(float, float)。

比较浮点数值p1p2 ,如果认为相等,则返回true ,否则返回false

两个数字是相对比较的,数字越小,精确度越高。

[noexcept, since 6.5.3] size_t qHash(qfloat16 key, size_t seed = 0)

返回key 的哈希值,使用seed 作为计算的种子。

注: 在 6.5 之前的 Qt 版本中,此操作由 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)

使用标准 IEEE 754 格式将浮点数f 写入数据流ds 。返回对数据流的引用。

注: 在 6.3 之前的 Qt 版本中,这是QDataStream 上的一个成员函数。

QDataStream &operator>>(QDataStream &ds, qfloat16 &f)

使用标准 IEEE 754 格式,将浮点数从数据流ds 读入f 。返回对数据流的引用。

注: 在 6.3 之前的 Qt 版本中,这是QDataStream 上的一个成员函数。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.