qfloat16 Class

Bietet 16-Bit-Gleitkomma-Unterstützung. Mehr...

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

Diese Klasse ist teilweise vergleichbar.

Diese Klasse ist teilweise vergleichbar mit float, double, long double, qint8, quint8, qint16, quint16, qint32, quint32, long, unsigned long, qint64, und quint64.

Diese Klasse ist teilweise vergleichbar mit qint128 und quint128.

Der Vergleich mit 128-Bit-Integraltypen wird nur unterstützt, wenn Qt diese Typen zur Verfügung stellt.

Öffentliche Funktionen

(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)

Detaillierte Beschreibung

Die Klasse qfloat16 bietet Unterstützung für halbpräzise (16-Bit) Fließkommadaten. Sie ist als Speichertyp vollständig konform mit IEEE 754. Dies bedeutet, dass jede arithmetische Operation auf einer qfloat16 Instanz dazu führt, dass der Wert zuerst in float konvertiert wird. Diese Konvertierung in und aus float wird, wenn möglich, von der Hardware durchgeführt, aber auf Prozessoren, die nicht von Haus aus Halbpräzision unterstützen, wird die Konvertierung durch eine Sequenz von Lookup-Table-Operationen durchgeführt.

qfloat16 sollte so behandelt werden, als wäre es ein POD-Typ (plain old data). Folglich muss keine der unterstützten Operationen weiter ausgeführt werden, als dass sie alle arithmetischen Operatoren für Fließkommatypen unterstützt.

Hinweis: Auf x86 und x86-64 müssen Sie mit aktiviertem F16C oder AVX2 kompilieren, um hardwarebeschleunigte Konvertierungen zu erhalten, oder qFloatToFloat16() und qFloatFromFloat16() verwenden, die F16C zur Laufzeit erkennen.

Dokumentation der Mitgliedsfunktionen

[explicit noexcept, since 6.1] qfloat16::qfloat16(Qt::Initialization)

Konstruiert eine qfloat16, ohne den Wert zu initialisieren.

Diese Funktion wurde in Qt 6.1 eingeführt.

[noexcept] qfloat16 qfloat16::copySign(qfloat16 sign) const

Gibt eine qfloat16 mit dem Vorzeichen von sign zurück, wobei der Rest des Wertes von dieser qfloat16 übernommen wird. Dient als qfloat16-Äquivalent zu std::copysign().

[constexpr noexcept] bool qfloat16::isNormal() const

Gibt true zurück, wenn dieser qfloat16 Wert endlich ist und in Normalform vorliegt.

Siehe auch qFpClassify().

Verwandte Nicht-Mitglieder

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

Konvertiert len qfloat16 von in in Floats und speichert sie in out. Sowohl in als auch out müssen len zugeordnete Einträge haben.

Diese Funktion ist schneller als die Konvertierung der Werte nacheinander und führt die F16C-Erkennung zur Laufzeit auf x86- und x86-64-Hardware durch.

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

Konvertiert len Floats von in nach qfloat16 und speichert sie in out. Sowohl in als auch out müssen len zugeordnete Einträge haben.

Diese Funktion ist schneller als die Konvertierung der Werte nacheinander und führt die F16C-Erkennung zur Laufzeit auf x86- und x86-64-Hardware durch.

[noexcept] int qFpClassify(qfloat16 val)

Diese Funktion überlastet qFpClassify(float).

Gibt die Fließkommaklasse von val zurück.

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

Diese Funktion überlastet qFuzzyCompare(float, float).

Vergleicht die Fließkommazahlen p1 und p2 und gibt true zurück, wenn sie als gleich angesehen werden, ansonsten false.

Die beiden Zahlen werden relativ verglichen, wobei die Genauigkeit umso größer ist, je kleiner die Zahlen sind.

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

Gibt den Hashwert für key zurück, wobei seed als Seed für die Berechnung verwendet wird.

Hinweis: In Qt-Versionen vor 6.5 wurde diese Operation von der qHash(float)-Überladung bereitgestellt. In den Qt-Versionen 6.5.0 bis 6.5.2 war diese Funktionalität auf verschiedene Weise gestört. In den Qt-Versionen 6.5.3 und 6.6 ff. stellt diese Überladung das Verhalten von Qt 6.4 wieder her.

Diese Funktion wurde in Qt 6.5.3 eingeführt.

[noexcept] bool qIsFinite(qfloat16 f)

Diese Funktion überlastet qIsFinite(float).

Gibt true zurück, wenn die qfloat16 f eine endliche Zahl ist.

[noexcept] bool qIsInf(qfloat16 f)

Diese Funktion ist eine Überladung von qIsInf(float).

Gibt true zurück, wenn die qfloat16 f äquivalent zu unendlich ist.

[noexcept] bool qIsNaN(qfloat16 f)

Diese Funktion überlastet qIsNaN(float).

Gibt true zurück, wenn die qfloat16 f keine Zahl (NaN) ist.

[noexcept] qint64 qRound64(qfloat16 value)

Diese Funktion überlastet qRound64(float).

Rundet value auf die nächstliegende 64-Bit-Ganzzahl.

[noexcept] int qRound(qfloat16 value)

Diese Funktion überlastet qRound(float).

Rundet value auf die nächstliegende Ganzzahl.

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

Schreibt eine Fließkommazahl, f, in den Stream ds unter Verwendung des Standardformats IEEE 754. Gibt einen Verweis auf den Stream zurück.

Hinweis: In Qt-Versionen vor 6.3 war dies eine Member-Funktion auf QDataStream.

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

Liest eine Fließkommazahl aus dem Stream ds in f, wobei das Standardformat IEEE 754 verwendet wird. Gibt eine Referenz auf den Stream zurück.

Hinweis: In Qt-Versionen vor 6.3 war dies eine Member-Funktion auf 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.