Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Dubbelprecisionstal | Numeriska Datatyper
C++-Datatyper
close
Avsnitt 2. Kapitel 5
single

single

bookDubbelprecisionstal

Svep för att visa menyn

Precisionen hos float (7 decimaler) är inte alltid tillräcklig. Men C++ har en lösning: double. Med en precision på 15 decimaler är den mycket mer exakt än float. Syntaxen för att använda double är densamma som vanligt:

double.

double.

copy
1
double num = 3.14159265359;

Som standard skriver cout ut flyttal med en precision av 6 signifikanta siffror. På så sätt ser du ingen skillnad mellan float och double. För att ställa in en högre precision kan vi återigen använda std::cout << std::setprecision(15); (detta ställer in precisionen till 15 signifikanta siffror).

Glöm inte att inkludera <iomanip> för att kunna använda std::setprecision().

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> #include <iomanip> int main() { float pi_float = 3.14159265358979; double pi_double = 3.14159265358979; std::cout << "float pi: " << pi_float << std::endl; std::cout << "double pi: " << pi_double << std::endl; std::cout << std::setprecision(15); std::cout << "float pi with setprecision: " << pi_float << std::endl; std::cout << "double pi with setprecision: " << pi_double << std::endl; }

Hur uppnås bättre precision i double?

Det kräver helt enkelt mer minne. En float-typ använder 4 byte, medan en double använder 8 byte minne.

Det finns också en typ som heter long double. Dess storlek varierar från 8 byte (samma som en double) till 16 byte. Du kan kontrollera storleken på long double på ditt system genom att använda följande kod:

sizeof.h

sizeof.h

copy
1
std::cout << sizeof(long double);

Dessutom bör du lägga till L till ett värde du tilldelar (annars kommer värdet att tilldelas med precisionen för double). Se exemplet:

double.h

double.h

copy
1
long double pi = 3.141592653589793238462643L;
Note
Observera

Om du fick nollor i utdata, kontrollera att du har tilldelat värdena exakt som visas ovan (1/3., 1/3.L).

Uppgift

Swipe to start coding

Du behöver beräkna (1/3)² med olika datatyper. För detta, tilldela värdet 1/3 till variabler av typerna float, double och long double. Skriv sedan ut dessa tal multiplicerade med sig själva.

  1. Initiera en float-variabel med värdet 1/3.;
  2. Initiera en double-variabel med värdet 1/3.;
  3. Initiera en long double-variabel med värdet 1/3.L.
    notera: long double använder 16 byte minne på vårt system
  4. Ställ in utskriftens precision till 25 decimaler med setprecision(25);
  5. Skriv ut alla dessa värden multiplicerade med sig själva.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 5
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt