double-precision floating-point format
Főnév
double-precision floating-point format (tsz. double-precision floating-point formats)
- (informatika) A double-precision floating-point formátum (röviden: double) az egyik leggyakrabban használt lebegőpontos adattípus a számítástechnikában, különösen a C/C++, Java, Python és más programozási nyelvekben. A formátum az IEEE 754 szabvány szerint van definiálva, amely meghatározza a lebegőpontos számok tárolási módját, viselkedését és műveleteit.
🔢 Alapfogalmak
A lebegőpontos számok célja, hogy valós számokat tároljunk korlátozott számú bit felhasználásával. Az elnevezés onnan ered, hogy a tizedes pont pozíciója lebeghet: a számot egy normalizált forma és egy kitevő segítségével reprezentáljuk.
🧠 A double felépítése (IEEE 754)
A double formátum 64 bitből áll, három fő részből:
| Rész | Méret (bit) | Jelentés |
|---|---|---|
| Előjel bit | 1 | Pozitív/negatív |
| Kitevő (exponent) | 11 | Méretezési tényező |
| Mantissza (fraction, significand) | 52 | A szám számjegyei (pontosság) |
A szám értékét az alábbi képlet adja meg:
s: az előjel bitje (0 = pozitív, 1 = negatív)1.m: a mantissza (52 bit), mindig egy implicit 1-essel kezdődik (normalizált szám)e: a 11 bites kitevő dekódolva (eltolással: bias = 1023)
📦 Tárolás példája
Vegyük az alábbi double értéket: 6.5
Lépések:
- Bináris alak:
6.5 = 110.1 - Normalizált forma:
1.101 × 2^2 - Előjel bit:
0(pozitív) - Kitevő:
2 + 1023 = 1025 → binárisan: 10000000001 - Mantissza: az 1 utáni rész:
101000...(52 bitre kiegészítve)
Bináris reprezentáció (összesen 64 bit):
0 10000000001 1010000000000000000000000000000000000000000000000000
🔍 Különleges esetek
1. Nulla
- Előjel: 0 vagy 1
- Kitevő: 0
- Mantissza: 0 Kétféle nulla létezik:
+0és-0
2. Végtelen (∞)
- Kitevő: csak 1-esek (2047)
- Mantissza: 0
+∞vagy-∞attól függően, hogy az előjel bit 0 vagy 1.
3. NaN (Not a Number)
- Kitevő: csak 1-esek (2047)
- Mantissza: ≠ 0 Például
0.0 / 0.0eredménye.
4. Denormalizált számok
- Kitevő: 0
- Mantissza: ≠ 0 Használatuk: nagyon kis számok reprezentálása, ahol a normalizált forma már nem elég.
🎯 Pontosság és határok
- Pontosság: kb. 15-17 decimális számjegy
- Legkisebb pozitív normalizált érték: ≈ 2.225074 × 10⁻³⁰⁸
- Legnagyobb érték: ≈ 1.797693 × 10³⁰⁸
- Epsilon (gépegység): legkisebb érték, amit hozzá lehet adni 1-hez úgy, hogy az különbözzön tőle → kb.
2.220446 × 10⁻¹⁶
📊 Összehasonlítás float típussal
| Tulajdonság | float (single precision) |
double (double precision) |
|---|---|---|
| Méret | 32 bit | 64 bit |
| Kitevő | 8 bit | 11 bit |
| Mantissza | 23 bit | 52 bit |
| Pontosság | ~7 számjegy | ~15-17 számjegy |
| Használat | Kevesebb memória, gyorsabb | Nagyobb pontosság |
💻 Példák C++ nyelven
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double a = 1.0 / 3.0;
cout << setprecision(20) << a << endl; // pontosabb kiírás
return 0;
}
Kimenet:
0.33333333333333331483
⚠️ Hibák és veszélyek
- Kerekítési hibák: minden műveletnél fennáll, mivel véges biten tároljuk a végtelen számú tizedest.
- Összehasonlítás: lebegőpontos számokat nem szabad egyenlőségvizsgálattal (
==) összehasonlítani. Használj epszilon alapú ellenőrzést:
bool almostEqual(double a, double b, double eps = 1e-10) {
return fabs(a - b) < eps;
}
- Associativity nem érvényes:
(a + b) + c ≠ a + (b + c)
🔧 Alkalmazási területek
- Tudományos számítások
- Grafika (pl. OpenGL)
- Gépi tanulás, szimulációk
- Fizikai modellezés
- Numerikus módszerek
🧮 IEEE 754 számábrázolás gyakorlati elemző
Példa online dekóderre:
Ez megmutatja:
- Bináris tárolási formátumot
- Hexadecimális kódot
- Mantisszát és kitevőt
🧩 Végszó
A double-precision floating-point egy kompromisszum: elegendő pontosság sok alkalmazáshoz, miközben még mindig elérhető sebességgel és memóriaköltséggel dolgozik. Bár nem alkalmas minden típusú számolásra (pl. pénzügyi számításokhoz fixpontos aritmetika javasolt), a tudományos és technikai programozásban elengedhetetlen eszköz.
- double-precision floating-point format - Szótár.net (en-hu)
- double-precision floating-point format - Sztaki (en-hu)
- double-precision floating-point format - Merriam–Webster
- double-precision floating-point format - Cambridge
- double-precision floating-point format - WordNet
- double-precision floating-point format - Яндекс (en-ru)
- double-precision floating-point format - Google (en-hu)
- double-precision floating-point format - Wikidata
- double-precision floating-point format - Wikipédia (angol)