Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tall med dobbel presisjon | Numeriske Datatyper
C++ Datatyper
Seksjon 2. Kapittel 5
single

single

bookTall med dobbel presisjon

Sveip for å vise menyen

Presisjonen til float (7 desimaler) er ikke alltid tilstrekkelig. Men C++ har en løsning: double. Med en presisjon på 15 desimaler er den langt mer nøyaktig enn float. Syntaksen for å bruke double er den samme som alltid:

double.

double.

copy
1
double num = 3.14159265359;

Som standard skriver cout ut flyttall med en presisjon på 6 signifikante sifre. Dermed vil du ikke se forskjell mellom float og double. For å angi høyere presisjon, kan vi bruke std::cout << std::setprecision(15); igjen (dette setter presisjonen til 15 signifikante sifre).

Ikke glem å inkludere <iomanip> for å kunne bruke 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; }

Hvordan oppnås bedre presisjon i double?

Det krever bare mer minne. En float-type bruker 4 byte, mens en double bruker 8 byte med minne.

Det finnes også en long double-type. Størrelsen varierer fra 8 byte (akkurat som en double) til 16 byte. Du kan sjekke størrelsen på long double på ditt system ved å bruke følgende kode:

sizeof.h

sizeof.h

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

I tillegg bør du legge til L til en verdi du tildeler (ellers vil verdien bli tildelt med presisjonen til double). Se på eksempelet:

double.h

double.h

copy
1
long double pi = 3.141592653589793238462643L;
Note
Merk

Hvis du fikk nuller i utdataene, må du sørge for at du har tildelt verdiene nøyaktig som vist ovenfor (1/3., 1/3.L).

Oppgave

Swipe to start coding

Du skal beregne (1/3)² ved å bruke ulike datatyper. For dette, tildel verdien 1/3 til variabler av typene float, double og long double. Skriv deretter ut disse tallene multiplisert med seg selv.

  1. Initialiser en float-variabel med verdien 1/3.;
  2. Initialiser en double-variabel med verdien 1/3.;
  3. Initialiser en long double-variabel med verdien 1/3.L.
    Merk: long double bruker 16 byte minne på vårt system
  4. Sett presisjonen på utdata til 25 desimaler med setprecision(25);
  5. Skriv ut alle disse verdiene multiplisert med seg selv.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 5
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt