single
Tall 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.
1double 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
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
1std::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
1long double pi = 3.141592653589793238462643L;
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).
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.
- Initialiser en
float-variabel med verdien1/3.; - Initialiser en
double-variabel med verdien1/3.; - Initialiser en
long double-variabel med verdien1/3.L.
Merk:long doublebruker 16 byte minne på vårt system - Sett presisjonen på utdata til 25 desimaler med
setprecision(25); - Skriv ut alle disse verdiene multiplisert med seg selv.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår