qfloat16 Class
支持 16 位浮点运算。更多...
| 头文件: | #include <QFloat16> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
qfloat16 比较
| 类别 | 可比较类型 | 描述 |
|---|---|---|
| 部分 | qfloat16 | |
| 部分 | float、double 、long double、qint8 、quint8 、qint16 、quint16 、qint32 、quint32 、long、unsigned long、qint64 和quint64 。 | |
| 部分 | qint128 以及quint128 。 | 只有当 Qt 提供了这些类型时,才支持与 128 位整数类型的比较。 |
公共函数
(since 6.1) | qfloat16(Qt::Initialization) |
| bool | isNormal() const |
(since 6.12) qfloat16 & | operator++() |
(since 6.12) qfloat16 | operator++(int) |
(since 6.12) qfloat16 & | operator--() |
(since 6.12) qfloat16 | operator--(int) |
相关非成员
(since 6.11) qfloat16 | copysign(qfloat16 x, qfloat16 sign) |
| 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) |
(since 6.11) bool | signbit(qfloat16 x) |
(since 6.12) qfloat16 | operator+(qfloat16 a) |
| 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 中引入。
[constexpr noexcept] bool qfloat16::isNormal() const
如果该qfloat16 值是有限的且处于标准形式,则返回true 。
另请参阅 qFpClassify()。
[noexcept, since 6.12] qfloat16 &qfloat16::operator++()
将该值预先递增 1,并返回该值的引用。
该函数首次出现在 Qt 6.12 中。
[noexcept, since 6.12] qfloat16 qfloat16::operator++(int)
将该值后递增 1,并返回原值。
该函数在 Qt 6.12 中引入。
[noexcept, since 6.12] qfloat16 &qfloat16::operator--()
将该值预减1,并返回该值的引用。
该函数于 Qt 6.12 中引入。
[noexcept, since 6.12] qfloat16 qfloat16::operator--(int)
将该值后递减 1,并返回原值。
该函数在 Qt 6.12 中引入。
相关的非成员函数
[noexcept, since 6.11] qfloat16 copysign(qfloat16 x, qfloat16 sign)
返回一个 qfloat16 类型,其符号来自 `sign `,但其余数值取自 `x`。该函数相当于 qfloat16 中的 `std::copysign()`。
该函数在 Qt 6.11 中引入。
另请参阅 signbit()。
[noexcept] void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)
将len 中的qfloat16(位于in )转换为float类型,并将其存储在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)
返回val 的浮点数类。
[noexcept] bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)
比较浮点数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)
如果qfloat16 f 是一个有限数,则返回true。
[noexcept] bool qIsInf(qfloat16 f)
如果qfloat16 f 等同于无穷大,则返回true。
[noexcept] bool qIsNaN(qfloat16 f)
如果qfloat16 f 不是一个数字(NaN),则返回 true。
qint64 qRound64(qfloat16 value)
将value 四舍五入为最接近的64位整数。
int qRound(qfloat16 value)
将value 四舍五入到最接近的整数。
[noexcept, since 6.11] bool signbit(qfloat16 x)
如果 qfloat16x 为负数,则返回 true;否则返回 false。请注意,对于负零、负无穷大和负 NaN 值,该函数均返回 true。
该函数在 Qt 6.11 中引入。
另请参阅 copysign()。
[constexpr noexcept, since 6.12] qfloat16 operator+(qfloat16 a)
返回未修改的 `a `。
该函数在 Qt 6.12 中引入。
QDataStream &operator<<(QDataStream &ds, qfloat16 f)
将浮点数 `f` 按标准 IEEE 754 格式写入流 `ds `。返回对该流的引用。
注意:在 Qt 6.3 之前的版本中,这是QDataStream 上的一个成员函数。
QDataStream &operator>>(QDataStream &ds, qfloat16 &f)
从流ds 中读取一个浮点数并将其赋值给f ,采用标准IEEE 754格式。返回该流的引用。
注意:在 Qt 6.3 之前的版本中,这是QDataStream 上的一个成员函数。
© 2026 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.