Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Kaksoistarkkuuden Luvut | Numeeriset tietotyypit
C++ Tietotyypit
Osio 2. Luku 5
single

single

bookKaksoistarkkuuden Luvut

Pyyhkäise näyttääksesi valikon

float-tyypin tarkkuus (7 desimaalia) ei aina riitä. C++ tarjoaa tähän ratkaisun: double. 15 desimaalin tarkkuudella se on huomattavasti tarkempi kuin float. double-tyypin käyttöön liittyvä syntaksi on sama kuin aiemmin:

double.

double.

copy
1
double num = 3.14159265359;

Oletuksena cout tulostaa liukulukuja 6 merkitsevän numeron tarkkuudella. Tällöin et huomaa eroa float- ja double-tyyppien välillä. Suuremman tarkkuuden asettamiseksi voidaan käyttää std::cout << std::setprecision(15); (tämä asettaa tarkkuuden 15 merkitsevään numeroon).

Muista sisällyttää <iomanip>, jotta voit käyttää std::setprecision()-funktiota.

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

Miten parempi tarkkuus saavutetaan double-tyypissä?

Se vie 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

sizeof.h

copy
1
std::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

double.h

copy
1
long double pi = 3.141592653589793238462643L;
Note
Huomio

Jos sait nollia tulosteeseen, varmista että annoit arvot täsmälleen yllä esitetyllä tavalla (1/3., 1/3.L).

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Sinun tulee laskea (1/3)² eri tietotyypeillä. Tätä varten aseta arvoksi 1/3 muuttujille, joiden tyypit ovat float, double ja long double. Tulosta sitten nämä luvut kerrottuna itsellään.

  1. Alusta float-tyyppinen muuttuja arvolla 1/3.;
  2. Alusta double-tyyppinen muuttuja arvolla 1/3.;
  3. Alusta long double-tyyppinen muuttuja arvolla 1/3.L.
    huom: long double vie järjestelmässämme 16 tavua muistia
  4. Aseta tulosteen tarkkuudeksi 25 desimaalia käyttäen setprecision(25);
  5. Tulosta kaikki nämä arvot kerrottuna itsellään.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 5
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt