Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dobbeltpræcisionsnumre | Numeriske Datatyper
C++ Datatyper
Sektion 2. Kapitel 5
single

single

bookDobbeltpræcisionsnumre

Stryg for at vise menuen

Præcisionen af float (7 decimaler) er ikke altid tilstrækkelig. Men C++ har en løsning: double. Med en præcision på 15 decimaler er den langt mere nøjagtig end float. Syntaksen for at bruge double er den samme som altid:

double.

double.

copy
1
double num = 3.14159265359;

Som standard udskriver cout flydende tal med en præcision på 6 betydende cifre. Derfor vil du ikke se forskel på float og double. For at angive en større præcision kan vi igen bruge std::cout << std::setprecision(15); (dette sætter præcisionen til 15 betydende cifre).

Husk at inkludere <iomanip> for at kunne bruge 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 opnås bedre præcision i double?

Det kræver blot mere hukommelse. En float-type optager 4 bytes, og en double optager 8 bytes hukommelse.

Der findes også en long double-type. Dens størrelse varierer fra 8 bytes (ligesom en double) til 16 bytes. Du kan kontrollere størrelsen af long double på dit system ved at bruge følgende kode:

sizeof.h

sizeof.h

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

Derudover bør du tilføje L til en værdi, du tildeler (ellers vil værdien blive tildelt med præcisionen af double). Se eksemplet:

double.h

double.h

copy
1
long double pi = 3.141592653589793238462643L;
Note
Bemærk

Hvis du fik nuller i outputtet, skal du sikre dig, at du har tildelt værdierne præcis som vist ovenfor (1/3., 1/3.L).

Opgave

Swipe to start coding

Du skal beregne (1/3)² ved hjælp af forskellige datatyper. Til dette skal du tildele værdien 1/3 til variabler af typerne float, double og long double. Udskriv derefter disse tal ganget med sig selv.

  1. Initialiser en float-variabel med værdien 1/3.;
  2. Initialiser en double-variabel med værdien 1/3.;
  3. Initialiser en long double-variabel med værdien 1/3.L.
    bemærk: long double bruger 16 bytes hukommelse på vores system
  4. Indstil præcisionen af output til 25 decimaler med setprecision(25);
  5. Udskriv alle disse værdier ganget med sig selv.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 5
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt