Kezdőoldal » Számítástechnika » Programozás » Mi a különbség a double és...

Mi a különbség a double és long double között, ha mindkettő 15 számjegyig tud tárolni valós számokat?

Figyelt kérdés

2016. máj. 29. 11:49
 1/6 A kérdező kommentje:
(C++)
2016. máj. 29. 11:50
 2/6 anonim ***** válasza:
100%
Architektúrától, fordítótól függ. A long double legalább akkora számítási pontossággal rendelkezik, mint a double, viszont meg is haladhatja azt, például 32 bit esetén 10 bájton tárolva.
2016. máj. 29. 12:14
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:

A double 64 biten tárolja a számot, a long double 80 biten, de lehet nagyobb is:

[link]

[link]

2016. máj. 29. 12:16
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
VC++ fordítón a long double aliasa a double-nek, nincs különbség. GCC-n a long double 80 bites, a double 64 általában. A modern FPU-k 64 bitre optimalizálnak, a 80 bit régről maradt meg kompatibilitási okokból.
2016. máj. 29. 12:27
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

Érdekes, mert nálam a sizeof 16 bájtot ír a long double-ra. Viszont ha includeolom a <limits> headert és kiíratom a long double minimum és maximum értékét, akkor azok jelentősen eltérnek:

cout << numeric_limits<long double>::min() << endl;

3.3621e-4932

cout << numeric_limits<long double>::max() << endl;

1.18973e+4932


Ebből arra tippelnék, hogy nem 16 bájt az, hanem csak 10 (azaz 80 bit).


Bár egyébként mindkettő óriási érték. 1.18973 * 10^4932.

2016. máj. 30. 15:20
 6/6 anonim ***** válasza:

Nem értem mit akartál a numeric_limits-szel mondani, de:

Azért nem 10 bájtot ír ki hanem többet mert 32 bites rendszereken az adatokat általában kiegészíti a fordító a 4 bájt többszörösére, míg 64 bites rendszereken a 8 többszörösére. Az adatod attól még 10 bájtos marad, a 16-ból a maradék 6-ot nem használja.


Ennek okáról több info itt:

[link]


GCC-n 10 bájt a long double ezért 12 bájtot foglal 32 biten, 16 bájtot foglal 64 biten.

VC++-on 8 bájt a long double így 8 bájtot foglal 32 és 64 biten is.


A numeric_limits kiírta neked a legkisebb (lásd a negatív előjelet!) és a legnagyobb ábrázolható pozitív lebegőpontos számot.

2016. máj. 30. 18:35
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!