single-precision floating-point format
Megjelenés
Főnév
single-precision floating-point format (tsz. single-precision floating-point formats)
- (informatika) A single-precision floating-point format (röviden: float) az IEEE 754 szabvány szerinti 32 bites lebegőpontos számábrázolási forma. Ez az egyik leggyakrabban használt adattípus, amely lehetővé teszi valós számok hatékony tárolását és műveletek végzését korlátozott erőforrás mellett — különösen alkalmas olyan alkalmazásokhoz, ahol a sebesség és a memóriahasználat fontosabb, mint a pontosság (pl. grafika, gépi tanulás, beágyazott rendszerek).
🧠 A float (single-precision) felépítése
Az IEEE 754 szerint a float 32 biten tárolódik, és három fő komponensből áll:
| Komponens | Méret (bit) | Jelentés |
|---|---|---|
| Előjelbit | 1 | 0 = pozitív, 1 = negatív |
| Kitevő | 8 | Normalizálás, skálázás |
| Mantissza (fraction) | 23 | Számjegyek a tört részben |
A lebegőpontos szám értelmezése:
s: az előjel bitje1.m: a mantissza, egy implicit 1-gyel kiegészítvee: a kitevő eltolva 127-tel (bias = 127)
📦 Példa: 5.75 lebegőpontos ábrázolása
- Tizedes → bináris:
5.75 = 101.11→ normalizálva:1.0111 × 2^2 - Előjel: 0 (pozitív)
- Kitevő:
2 + 127 = 129→ binárisan:10000001 - Mantissza:
011100...(23 bitre egészítve)
Binárisan:
0 10000001 01110000000000000000000
Hexadecimálisan:
0x40B80000
🧬 Speciális esetek
1. Nulla
- Előjel lehet 0 vagy 1
- Kitevő: 0
- Mantissza: 0 Két nulla:
+0.0és-0.0
2. Végtelen (±∞)
- Kitevő: 255 (csupa 1)
- Mantissza: 0
3. NaN (Not a Number)
- Kitevő: 255
- Mantissza: ≠ 0 Pl.:
sqrt(-1.0),0.0 / 0.0
4. Denormalizált számok
- Kitevő: 0
- Mantissza: ≠ 0 Használható nagyon kis értékek reprezentálására.
🔍 Tulajdonságok
| Tulajdonság | Érték |
|---|---|
| Méret | 32 bit (4 bájt) |
| Pontosság | ~6–7 tizedes számjegy |
| Kitevő tartomány | -126 … +127 |
| Legnagyobb érték | ~3.4 × 10³⁸ |
| Legkisebb pozitív | ~1.18 × 10⁻³⁸ |
| Gép epsilon | ~1.19 × 10⁻⁷ |
⚠️ Problémák a float típussal
- Pontatlanság: nem minden szám ábrázolható pontosan (pl.
0.1binárisan végtelen). - Kerekítési hibák: műveletek során felhalmozódhatnak.
- Összehasonlítás hibák: ne használj
==-et két float összehasonlítására:
bool almostEqual(float a, float b, float epsilon = 1e-6) {
return fabs(a - b) < epsilon;
}
- Nem asszociatív:
(a + b) + c ≠ a + (b + c)
📊 Float vs Double
| Tulajdonság | float |
double |
|---|---|---|
| Méret | 32 bit | 64 bit |
| Pontosság | ~7 decimális számjegy | ~15-17 számjegy |
| Gyorsaság | Gyorsabb (néhány CPU-n) | Lassabb, de pontosabb |
| Használat | Grafika, ML, játékok | Tudományos számítások |
💻 Példák C++ nyelven
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float x = 1.0f / 3.0f;
cout << setprecision(10) << x << endl;
return 0;
}
Kimenet:
0.3333333433
🧠 Gép epsilon (gépegység)
A gépegység (machine epsilon) annak a legkisebb számnak az abszolút értéke, amit ha 1-hez adunk, még eltér tőle. Float esetén ez kb. 1.19209e-07.
🧰 Hol használjuk a float típust?
- Grafikus programozás (OpenGL, DirectX)
- Gépi tanulás, ahol a modellek float típussal tanulnak (pl. TensorFlow, PyTorch)
- Beágyazott rendszerek, ahol a memóriatakarékosság kiemelt
- Játékfejlesztés, valós idejű számításokhoz
🔧 Ellenőrzés, konverzió
- A
floattípus literáljaf-fel zárul:3.14f - Ha nem írsz
f-et, az alapértelmezettdoublelesz:
float a = 3.14; // implicit cast double → float
float b = 3.14f; // pontos float érték
📎 Összegzés
| Előnyök | Hátrányok |
|---|---|
| Gyors műveletek | Kisebb pontosság |
| Kevesebb memóriahasználat | Kerekítési hibák, alulműködés |
| Hatékony párhuzamos futás | Nem pontos pénzügyi számításokra |
- single-precision floating-point format - Szótár.net (en-hu)
- single-precision floating-point format - Sztaki (en-hu)
- single-precision floating-point format - Merriam–Webster
- single-precision floating-point format - Cambridge
- single-precision floating-point format - WordNet
- single-precision floating-point format - Яндекс (en-ru)
- single-precision floating-point format - Google (en-hu)
- single-precision floating-point format - Wikidata
- single-precision floating-point format - Wikipédia (angol)