qfloat16 Class
Prend en charge la virgule flottante 16 bits. Plus d'informations...
| En-tête : | #include <QFloat16> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Cette classe est partiellement comparable.
Cette classe est partiellement comparable à float, double, long double, qint8, quint8, qint16, quint16, qint32, quint32, long, unsigned long, qint64, et quint64.
Cette classe est partiellement comparable à qint128 et quint128.
La comparaison avec les types intégraux de 128 bits n'est possible que si Qt fournit ces types.
Fonctions publiques
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) |
| 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 en virgule flottante de demi-précision (16 bits). Elle est entièrement conforme à la norme IEEE 754 en tant que type de stockage. Cela implique que toute opération arithmétique sur une instance qfloat16 entraîne d'abord la conversion de la valeur en float. Cette conversion de et vers float est effectuée par le matériel lorsque cela est possible, mais sur les processeurs qui ne prennent pas en charge la demi-précision de manière native, la conversion est effectuée par une séquence d'opérations de table de consultation.
qfloat16 Les données de type POD (plain old data) doivent être traitées comme s'il s'agissait d'un type POD (plain old data). Par conséquent, aucune des opérations prises en charge n'a besoin d'être développée, si ce n'est pour indiquer qu'elle prend en charge tous les opérateurs arithmétiques liés aux types à virgule flottante.
Note : Sur x86 et x86-64, pour obtenir des conversions matérielles accélérées, vous devez compiler avec F16C ou AVX2 activé, ou utiliser qFloatToFloat16() et qFloatFromFloat16() qui détecteront F16C au moment de l'exécution.
Documentation des fonctions membres
[explicit noexcept, since 6.1] qfloat16::qfloat16(Qt::Initialization)
Construit un qfloat16 sans initialiser la 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 aussi qFpClassify().
Non-membres apparentés
[noexcept, since 6.11] qfloat16 copysign(qfloat16 x, qfloat16 sign)
Renvoie un qfloat16 avec le signe de sign mais dont le reste de la valeur provient de x. C'est l'équivalent de std::copysign() pour qfloat16.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi signbit().
[noexcept] void qFloatFromFloat16(float *out, const qfloat16 *in, qsizetype len)
Convertit len qfloat16 de in en flottants et les stocke dans out. in et out doivent avoir des entrées allouées à len.
Cette fonction est plus rapide que la conversion des valeurs une par une et permet de détecter les F16C au moment de l'exécution sur le matériel x86 et x86-64.
[noexcept] void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)
Convertit les valeurs flottantes len de in en qfloat16 et les stocke dans out. in et out doivent avoir des entrées allouées à len.
Cette fonction est plus rapide que la conversion des valeurs une par une et permet de détecter les F16C au moment de l'exécution sur le matériel x86 et x86-64.
[noexcept] int qFpClassify(qfloat16 val)
Renvoie la classe de 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.
Les deux nombres sont comparés de manière relative, l'exactitude étant d'autant plus grande que les nombres sont petits.
[noexcept, since 6.5.3] size_t qHash(qfloat16 key, size_t seed = 0)
Renvoie la valeur de hachage pour key, en utilisant seed comme base de calcul.
Note : Dans les versions de Qt antérieures à la version 6.5, cette opération était fournie par la surcharge qHash(float). Dans les versions 6.5.0 à 6.5.2 de Qt, cette fonctionnalité a été interrompue de diverses manières. Dans les versions 6.5.3 et 6.6 de Qt, cette surcharge restaure le comportement de Qt 6.4.
Cette fonction a été introduite dans Qt 6.5.3.
[noexcept] bool qIsFinite(qfloat16 f)
Retourne vrai si le site qfloat16 f est un nombre fini.
[noexcept] bool qIsInf(qfloat16 f)
Retourne vrai si le site qfloat16 f est équivalent à l'infini.
[noexcept] bool qIsNaN(qfloat16 f)
Retourne true si le qfloat16 f n'est pas un nombre (NaN).
qint64 qRound64(qfloat16 value)
Arrondit value à l'entier 64 bits le plus proche.
int qRound(qfloat16 value)
Arrondit value à l'entier le plus proche.
[noexcept, since 6.11] bool signbit(qfloat16 x)
Renvoie true si qfloat16 x est négatif, false sinon. Notez que cette fonction renvoie true pour les valeurs négatives de zéro, d'infini et de NaN.
Cette fonction a été introduite dans Qt 6.11.
Voir aussi copysign().
QDataStream &operator<<(QDataStream &ds, qfloat16 f)
Écrit un nombre à virgule flottante, f, dans le flux ds en utilisant le format standard IEEE 754. Retourne 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 du flux ds 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.