single
Kaksoistarkkuusluvut
Pyyhkäise näyttääksesi valikon
float-tyypin tarkkuus (7 desimaalia) ei aina riitä. C++ tarjoaa kuitenkin ratkaisun: double. 15 desimaalin tarkkuudella double on huomattavasti tarkempi kuin float. double-tyypin käyttöönottosyntaksi on sama kuin aiemmin:
double.
1double num = 3.14159265359;
Oletuksena cout tulostaa liukulukuja 6 merkitsevän numeron tarkkuudella. Tällöin eroa float- ja double-tyyppien välillä ei näy. Suuremman tarkkuuden asettamiseksi voidaan käyttää std::cout << std::setprecision(15); (asettaa tarkkuuden 15 merkitsevään numeroon).
Muista sisällyttää <iomanip>, jotta voit käyttää std::setprecision()-funktiota.
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; }
Kuinka parempi tarkkuus saavutetaan double-tyypissä?
Se käyttää vain enemmän muistia. float-tyyppi vie 4 tavua, ja double vie 8 tavua muistia.
On olemassa myös long double -tyyppi. Sen koko vaihtelee 8 tavusta (kuten double) 16 tavuun. Voit tarkistaa long double -tyypin koon järjestelmässäsi seuraavalla koodilla:
sizeof.h
1std::cout << sizeof(long double);
Lisäksi sinun tulisi lisätä L arvoon, jonka määrität (muuten arvo määritetään double-tarkkuudella). Katso esimerkki:
double.h
1long double pi = 3.141592653589793238462643L;
Jos saat nollia tulosteeseen, varmista, että olet määrittänyt arvot täsmälleen yllä esitetyllä tavalla (1/3., 1/3.L).
Swipe to start coding
Sinun tulee laskea (1/3)² käyttäen eri tietotyyppejä. Tätä varten aseta arvoksi 1/3 muuttujille, joiden tyypit ovat float, double ja long double. Tulosta sitten nämä luvut kerrottuna itsellään.
- Alusta
float-tyyppinen muuttuja arvolla1/3.; - Alusta
double-tyyppinen muuttuja arvolla1/3.; - Alusta
long double-tyyppinen muuttuja arvolla1/3.L.
huom:long doublevie 16 tavua muistia järjestelmässämme - Aseta tulosteen tarkkuudeksi 25 desimaalia käyttäen
setprecision(25); - Tulosta kaikki nämä arvot kerrottuna itsellään.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme