qfloat16 Class
Prend en charge les nombres à virgule flottante 16 bits. En savoir plus...
| En-tête : | #include <QFloat16> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
qfloat16 Comparaisons
| Catégorie | Types comparables | Description |
|---|---|---|
| partiel | qfloat16 | |
| partiel | float, double, long double, qint8, quint8, qint16, quint16, qint32, quint32, long, unsigned long, qint64 et quint64. | |
| partial | qint128 et quint128. | La comparaison avec les types entiers de 128 bits n’est prise en charge que si Qt fournit ces types. |
Fonctions publiques
(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) |
Éléments non membres associés
(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) |
Description détaillée
La classe qfloat16 prend en charge les données à virgule flottante de demi-précision (16 bits). En tant que type de stockage, elle est entièrement conforme à la norme IEEE 754. Cela implique que toute opération arithmétique sur une instance de « qfloat16 » entraîne d’abord la conversion de la valeur en « float ». Cette conversion vers et depuis « float » est effectuée par le matériel lorsque cela est possible, mais sur les processeurs qui ne prennent pas en charge nativement la demi-précision, la conversion s’effectue via une séquence d’opérations sur des tables de correspondance.
qfloat16 doit être traité comme s’il s’agissait d’un type POD (plain old data). Par conséquent, aucune des opérations prises en charge ne nécessite de précisions supplémentaires, si ce n’est qu’il prend en charge tous les opérateurs arithmétiques propres aux types à virgule flottante.
Remarque : sur les architectures x86 et x86-64, pour bénéficier de conversions accélérées par le matériel, vous devez compiler avec F16C ou AVX2 activé, ou utiliser qFloatToFloat16() et qFloatFromFloat16() qui détecteront F16C lors de l'exécution.
Documentation des fonctions membres
[explicit noexcept, since 6.1] qfloat16::qfloat16(Qt::Initialization)
Crée un qfloat16 sans initialiser sa valeur.
Cette fonction a été introduite dans Qt 6.1.
[constexpr noexcept] bool qfloat16::isNormal() const
Renvoie « true » si cette valeur qfloat16 est finie et sous forme normale.
Voir également qFpClassify().
[noexcept, since 6.12] qfloat16 &qfloat16::operator++()
Incrémente cette valeur de 1 et renvoie une référence à cette valeur.
Cette fonction a été introduite dans Qt 6.12.
[noexcept, since 6.12] qfloat16 qfloat16::operator++(int)
Incrémente cette valeur de 1 et renvoie l'ancienne valeur.
Cette fonction a été introduite dans Qt 6.12.
[noexcept, since 6.12] qfloat16 &qfloat16::operator--()
Décrémente préalablement cette valeur de 1 et renvoie une référence à cette valeur.
Cette fonction a été introduite dans Qt 6.12.
[noexcept, since 6.12] qfloat16 qfloat16::operator--(int)
Décrémente cette valeur de 1 et renvoie l'ancienne valeur.
Cette fonction a été introduite dans Qt 6.12.
Éléments non membres associés
[noexcept, since 6.11] qfloat16 copysign(qfloat16 x, qfloat16 sign)
Renvoie un qfloat16 dont le signe provient de sign, mais dont le reste de la valeur est tiré de x. Cette fonction est l'équivalent de std::copysign() pour qfloat16.
Cette fonction a été introduite dans Qt 6.11.
Voir également signbit().
[noexcept] void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)
Convertit les valeurs qfloat16 de ` len ` ( in ) en flottants et les stocke dans ` out`. Les structures ` in ` et ` out ` doivent toutes deux disposer d’entrées allouées dans ` len `.
Cette fonction est plus rapide que la conversion des valeurs une par une et effectue une détection F16C à l'exécution sur les matériels x86 et x86-64.
[noexcept] void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)
Convertit les nombres à virgule flottante de type « len » de « in » en « qfloat16 » et les stocke dans « out ». Les structures « in » et « out » doivent toutes deux disposer d’entrées allouées de type « len ».
Cette fonction est plus rapide que la conversion des valeurs une par une et effectue une détection F16C à l’exécution sur les matériels x86 et x86-64.
[noexcept] int qFpClassify(qfloat16 val)
Renvoie la classe à virgule flottante de val.
[noexcept] bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)
Compare les valeurs à virgule flottante p1 et p2 et renvoie true si elles sont considérées comme égales, sinon false.
La comparaison entre les deux nombres est relative : plus les nombres sont petits, plus la précision est grande.
[noexcept, since 6.5.3] size_t qHash(qfloat16 key, size_t seed = 0)
Renvoie la valeur de hachage de ` key`, en utilisant ` seed ` comme valeur de départ pour le calcul.
Remarque : dans les versions de Qt antérieures à la version 6.5, cette opération était assurée par la surcharge qHash(float). Dans les versions 6.5.0 à 6.5.2 de Qt, cette fonctionnalité présentait divers dysfonctionnements. À partir des versions 6.5.3 et 6.6 de Qt, cette surcharge rétablit le comportement de Qt 6.4.
Cette fonction a été introduite dans Qt 6.5.3.
[noexcept] bool qIsFinite(qfloat16 f)
Renvoie « true » si l'qfloat16 f est un nombre fini.
[noexcept] bool qIsInf(qfloat16 f)
Renvoie « true » si l'qfloat16 f est équivalente à l'infini.
[noexcept] bool qIsNaN(qfloat16 f)
Renvoie « true » si la valeur « qfloat16 » f n'est pas un nombre (NaN).
qint64 qRound64(qfloat16 value)
Arrondit la valeur « value » à l'entier de 64 bits le plus proche.
int qRound(qfloat16 value)
Arrondit la valeur « value » à l'entier le plus proche.
[noexcept, since 6.11] bool signbit(qfloat16 x)
Renvoie « true » si l'x e qfloat16 est négative, « false » dans le cas contraire. Notez que cette fonction renvoie « true » pour les valeurs zéro négatif, infini négatif et NaN négatif.
Cette fonction a été introduite dans Qt 6.11.
Voir également copysign().
[constexpr noexcept, since 6.12] qfloat16 operator+(qfloat16 a)
Renvoie « a » sans modification.
Cette fonction a été introduite dans Qt 6.12.
QDataStream &operator<<(QDataStream &ds, qfloat16 f)
Écrit un nombre à virgule flottante, f, dans le flux ds en utilisant le format standard IEEE 754. Renvoie une référence au flux.
Remarque : dans les versions de Qt antérieures à la version 6.3, il s'agissait d'une fonction membre de ` QDataStream`.
QDataStream &operator>>(QDataStream &ds, qfloat16 &f)
Lit un nombre à virgule flottante à partir du flux ds et le stocke dans f, en utilisant le format standard IEEE 754. Renvoie une référence au flux.
Remarque : dans les versions de Qt antérieures à la version 6.3, il s'agissait d'une fonction membre de ` 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.