single
Dobbeltpræ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.
1double 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
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
1std::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
1long double pi = 3.141592653589793238462643L;
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).
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.
- Initialiser en
float-variabel med værdien1/3.; - Initialiser en
double-variabel med værdien1/3.; - Initialiser en
long double-variabel med værdien1/3.L.
bemærk:long doublebruger 16 bytes hukommelse på vores system - Indstil præcisionen af output til 25 decimaler med
setprecision(25); - Udskriv alle disse værdier ganget med sig selv.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat