qfloat16 Class
16ビット浮動小数点数のサポートを提供します。詳細...
| ヘッダー: | #include <QFloat16> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
qfloat16 の比較
| カテゴリ | 比較可能な型 | 説明 |
|---|---|---|
| partial | qfloat16 | |
| partial | float、double 、long double、qint8 、quint8 、qint16 、quint16 、qint32 、quint32 、long、unsigned long、qint64 、およびquint64 。 | |
| partial | qint128 およびquint128 。 | 128 ビットの整数型との比較は、Qt がこれらの型を提供している場合にのみサポートされます。 |
パブリック関数
(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(plain old data)型であるかのように扱う必要があります。したがって、サポートされている演算については、浮動小数点型に付随するすべての算術演算子をサポートしているという記述以外に、特別な説明は必要ありません。
注:x86およびx86-64では 、ハードウェアによる高速変換を利用するには、F16CまたはAVX2を有効にしてコンパイルするか、実行時にF16Cを検出するqFloatToFloat16()およびqFloatFromFloat16()を使用する必要があります。
メンバ関数のドキュメント
[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)
sign の符号を持ち、それ以外の値はx から取得した qfloat16 を返します。これは、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 で割り当てられたエントリが存在している必要があります。
この関数は、値を1つずつ変換するよりも高速であり、x86およびx86-64ハードウェア上では実行時にF16Cの検出を行います。
[noexcept] void qFloatToFloat16(qfloat16 *out, const float *in, qsizetype len)
len の浮動小数点値をin からqfloat16に変換し、out に格納します。in とout の両方に、len のエントリが割り当てられている必要があります。
この関数は、値を1つずつ変換するよりも高速であり、x86およびx86-64ハードウェア上では実行時にF16Cの検出を行います。
[noexcept] int qFpClassify(qfloat16 val)
val の浮動小数点型クラスを返します。
[noexcept] bool qFuzzyCompare(qfloat16 p1, qfloat16 p2)
浮動小数点値 `p1 ` と `p2 ` を比較し、両者が等しいとみなされた場合は `true ` を返し、そうでない場合は `false` を返します。
2つの数値は相対的な方法で比較され、数値が小さいほど比較の厳密さが高くなります。
[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)
qfloat16 型x が負の値の場合、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)
標準のIEEE 754形式を使用して、ストリームds から浮動小数点数をf に読み込みます。ストリームへの参照を返します。
注: 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.