Fantastiskt!
Completion betyg förbättrat till 4.35single
Dubbelprecisionstal
Svep för att visa menyn
Precisionen hos float (7 decimaler) är inte alltid tillräcklig. Men C++ har en lösning: double. Med en precision på 15 decimaler är den mycket mer exakt än float. Syntaxen för att använda double är densamma som vanligt:
double.
1double num = 3.14159265359;
Som standard skriver cout ut flyttal med en precision av 6 signifikanta siffror. På så sätt ser du ingen skillnad mellan float och double. För att ställa in en högre precision kan vi återigen använda std::cout << std::setprecision(15); (detta ställer in precisionen till 15 signifikanta siffror).
Glöm inte att inkludera <iomanip> för att kunna använda 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; }
Hur uppnås bättre precision i double?
Det kräver helt enkelt mer minne. En float-typ använder 4 byte, medan en double använder 8 byte minne.
Det finns också en typ som heter long double. Dess storlek varierar från 8 byte (samma som en double) till 16 byte. Du kan kontrollera storleken på long double på ditt system genom att använda följande kod:
sizeof.h
1std::cout << sizeof(long double);
Dessutom bör du lägga till L till ett värde du tilldelar (annars kommer värdet att tilldelas med precisionen för double). Se exemplet:
double.h
1long double pi = 3.141592653589793238462643L;
Om du fick nollor i utdata, kontrollera att du har tilldelat värdena exakt som visas ovan (1/3., 1/3.L).
Swipe to start coding
Du behöver beräkna (1/3)² med olika datatyper. För detta, tilldela värdet 1/3 till variabler av typerna float, double och long double. Skriv sedan ut dessa tal multiplicerade med sig själva.
- Initiera en
float-variabel med värdet1/3.; - Initiera en
double-variabel med värdet1/3.; - Initiera en
long double-variabel med värdet1/3.L.
notera:long doubleanvänder 16 byte minne på vårt system - Ställ in utskriftens precision till 25 decimaler med
setprecision(25); - Skriv ut alla dessa värden multiplicerade med sig själva.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal