qfloat16 类

提供 16 位浮点数支持。 更多...

头文件 #include <QFloat16>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

此类是 部分可比较的.

此类与 float、double、long double、qint8quint8、qint16、quint16、qint32、quint32、long、unsigned long、qint64、quint64部分可比较的

此类与 qint128quint128部分可比较的

与 128 位整数类型的比较仅在 Qt 提供这些类型时才受支持。

公开函数

(自 6.1) qfloat16(Qt::Initialization)
qfloat16copySign(qfloat16 sign) const
boolisNormal() const
voidqFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)
voidqFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)
intqFpClassify(qfloat16 val)
boolqFuzzyCompare(qfloat16 p1, qfloat16 p2)
(自 6.5.3) size_tqHash(qfloat16 key, size_t seed = 0)
boolqIsFinite(qfloat16 f)
boolqIsInf(qfloat16 f)
boolqIsNaN(qfloat16 f)
qint64qRound64(qfloat16 value)
intqRound(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 中。两者 inout 都必须有 len 个已分配的条目。

此函数比逐个转换值更快,并且将在x86和x86-64硬件上执行F16C动态检测。

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

len 个浮点数从 in 转换为 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 对计算进行初始化。

注意: 在 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)。

如果 qfloat16f 是有限数,则返回 true。

[noexcept] bool qIsInf(qfloat16 f)

此函数重载了 qIsInf(float)。

如果 qfloat16f 等价于无穷大,则返回 true。

[noexcept] bool qIsNaN(qfloat16 f)

此函数重载了 qIsNaN(float)。

如果 qfloat16f 不是数字 (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版许可。