Fixed-Breite Gleitkommatypen (seit C++23)
Von cppreference.com
Wenn die Implementierung eines der folgenden ISO 60559-Typen als erweiterten Gleitkommatyp unterstützt, dann:
- ist das entsprechende Makro definiert als 1, um die Unterstützung anzuzeigen,
- ist der entsprechende Gleitkommaliteral-Suffix verfügbar, und
- ist der entsprechende Typalias-Name bereitgestellt.
| Typen Definiert in Header <stdfloat> |
Literal-Suffix | Vordefiniertes Makro | C-Sprachtyp | Typeneigenschaften | |||
|---|---|---|---|---|---|---|---|
| Speicherbits | Präzisionsbits | Exponentbits | Maximaler Exponent | ||||
| float16_t | f16 oder F16 | __STDCPP_FLOAT16_T__ | _Float16
|
16 | 11 | 5 | 15 |
| float32_t | f32 oder F32 | __STDCPP_FLOAT32_T__ | _Float32
|
32 | 24 | 8 | 127 |
| float64_t | f64 oder F64 | __STDCPP_FLOAT64_T__ | _Float64
|
64 | 53 | 11 | 1023 |
| float128_t | f128 oder F128 | __STDCPP_FLOAT128_T__ | _Float128
|
128 | 113 | 15 | 16383 |
| bfloat16_t | bf16 oder BF16 | __STDCPP_BFLOAT16_T__ | (N/A) | 16 | 8 | 8 | 127 |
Inhalt |
[bearbeiten] Anmerkungen
Der Typ std::bfloat16_t ist bekannt als Brain Floating-Point.
Im Gegensatz zu den Fixed-Breite Ganzzahltypen, die Aliase für Standard-Ganzzahltypen sein können, müssen die Fixed-Breite Gleitkommatypen Aliase für erweiterte Gleitkommatypen sein (nicht float / double / long double), und sind daher keine Drop-in-Ersetzungen für Standard-Gleitkommatypen.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <stdfloat> #if __STDCPP_FLOAT64_T__ != 1 #error "64-bit float type required" #endif int main() { std::float64_t f = 0.1f64; }
[bearbeiten] Referenzen
- C++23 Standard (ISO/IEC 14882:2024)
- 6.8.3 Optionale erweiterte Gleitkommatypen [basic.extended.fp]