Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Dubbel-Precisie Getallen | Numerieke Gegevenstypen
C++-Datatypen
Sectie 2. Hoofdstuk 5
single

single

bookDubbel-Precisie Getallen

Veeg om het menu te tonen

De precisie van float (7 decimalen) is niet altijd voldoende. Maar C++ biedt een oplossing: double. Met een precisie van 15 decimalen is dit veel nauwkeuriger dan float. De syntaxis voor het gebruik van double is hetzelfde als altijd:

double.

double.

copy
1
double num = 3.14159265359;

Standaard drukt cout zwevendekommagetallen af met een precisie van 6 significante cijfers. Daardoor zie je geen verschil tussen float en double. Om een hogere precisie in te stellen, kunnen we opnieuw std::cout << std::setprecision(15); gebruiken (dit stelt de precisie in op 15 significante cijfers).

Vergeet niet <iomanip> te includen om std::setprecision() te kunnen gebruiken.

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; }

Hoe wordt een betere precisie bereikt in double?

Het gebruikt gewoon meer geheugen. Een float-type gebruikt 4 bytes, en een double gebruikt 8 bytes geheugen.

Er is ook een long double-type. De grootte varieert van 8 bytes (net als een double) tot 16 bytes. Je kunt de grootte van de long double op jouw systeem controleren met de volgende code:

sizeof.h

sizeof.h

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

Daarnaast moet je L toevoegen aan een waarde die je toewijst (anders wordt de waarde toegewezen met de precisie van double). Bekijk het voorbeeld:

double.h

double.h

copy
1
long double pi = 3.141592653589793238462643L;
Note
Opmerking

Als je nullen in de uitvoer krijgt, controleer dan of je de waarden precies hebt toegekend zoals hierboven getoond (1/3., 1/3.L).

Taak

Veeg om te beginnen met coderen

Bereken (1/3)² met verschillende gegevenstypen. Ken hiervoor de waarde van 1/3 toe aan variabelen van het type float, double en long double. Druk vervolgens deze getallen, vermenigvuldigd met zichzelf, af.

  1. Initialiseer een float-variabele met de waarde 1/3.;
  2. Initialiseer een double-variabele met de waarde 1/3.;
  3. Initialiseer een long double-variabele met de waarde 1/3.L.
    opmerking: long double gebruikt 16 bytes geheugen op ons systeem
  4. Stel de precisie van de uitvoer in op 25 decimalen met setprecision(25);
  5. Druk al deze waarden, vermenigvuldigd met zichzelf, af.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt