Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Numeeriset Tietotyypit | Muuttujat ja Tietotyypit
C++ Johdanto

bookNumeeriset Tietotyypit

Kokonaisluvut

Kokonaislukutietotyypit ovat yleisimmin käytettyjä kokonaisluvuille. int-tietotyyppi voi sisältää arvoja välillä -2,147,483,6482,147,483,647.

main.cpp

main.cpp

copy
12345678910
#include <iostream> int main() { int goodNumber = 12; int tooLarge = 2147483648; std::cout << "Printing goodNumber: " << goodNumber << std::endl; std::cout << "Printing tooLarge: " << tooLarge << std::endl; }

Tämä johtuu siitä, että kun määrittelet int-muuttujan, se varaa tarkalleen 4 tavua tietokoneesi muistista. Ja luvut, jotka ovat suurempia kuin 2147483647 (tai pienempiä kuin -2147483648), eivät mahdu näihin 4 tavuun. Onneksi käytettävissä on myös muita tietotyyppejä, jotka voivat varata enemmän (tai vähemmän) tilaa tarpeidesi mukaan. Tässä on taulukko:

Tietotyyppi
Arvoalue
Koko
short
-32,768 to 32,767
2 bytes
int
-2,147,483,648 to 2,147,483,647
4 bytes
long
-9223372036854775808 to 9223372036854775807
8 bytes

long soveltuu suurten lukujen tallentamiseen (esim. maailman väkiluku). short voidaan käyttää, jos tiedetään, että luku ei ylitä arvoaluetta -32,76832,767 (esim. käyttäjän iän tallentaminen). short vie vähemmän muistia.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> int main() { short age = 22; int likes = 143200; long population = 8200000000; std::cout << "Age: " << age << std::endl; std::cout << "Likes: " << likes << std::endl; std::cout << "World's population: " << population << std::endl; }

Huomio

Ole tarkkana valitessasi tietotyyppiä. Jos tyypin sallittu arvoalue ylitetään, C++-kääntäjä ei ilmoita siitä, ja saatat saada odottamattoman arvon ilman virheilmoitusta.

Liukuluvut

Yllä mainitut tietotyypit on suunniteltu kokonaislukujen tallentamiseen. Jos yrittäisimme asettaa arvon 1.6 johonkin näistä, saisimme seuraavan tuloksen:

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { // Change the data type to `float` o `double` int num = 1.6; std::cout << num << std::endl; }

int-tyyppi katkaisee luvun desimaaliosan. Tämä käyttäytyminen on sama myös short- ja long-tyypeille. Jos haluat tallentaa liukulukuja (desimaalilukuja), sinun tulee käyttää joko float- tai double-tietotyyppiä.

Tietotyyppi
Tarkkuus
Koko
float
7 desimaalia
4 tavua
double
15 desimaalia
8 tavua

Tässä on esimerkki, jossa käytetään double-tyyppiä luvun 1.6 tallentamiseen.

main.cpp

main.cpp

copy
12345678910
#include <iostream> int main() { float floatNum = 123.45678; double doubleNum = 123.45678; std::cout << "using float:" << floatNum - 123 << std::endl; std::cout << "using double:" << doubleNum - 123 << std::endl; }

Huomio

Koska float-tyypin tarkkuus on vain seitsemän numeroa, luku 123.456789 ylittää jo sen tarkkuuden. Tämä voi johtaa epätarkkoihin tuloksiin (kuten alla olevassa esimerkissä). Siksi on suositeltavaa käyttää oletuksena double-tyyppiä, ellei ole varma, että float-tarkkuus riittää.

On mahdollista käyttää float- tai double-tyyppiä kokonaislukujen tallentamiseen, koska ne ovat desimaalilukuja, joiden desimaaliosa on 0. Hyvänä käytäntönä kuitenkin, jos muuttujaan tallennetaan vain kokonaislukuja (esim. väkiluku tai tykkäykset), tulisi käyttää short/int/long-tyyppejä.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Awesome!

Completion rate improved to 3.85

bookNumeeriset Tietotyypit

Pyyhkäise näyttääksesi valikon

Kokonaisluvut

Kokonaislukutietotyypit ovat yleisimmin käytettyjä kokonaisluvuille. int-tietotyyppi voi sisältää arvoja välillä -2,147,483,6482,147,483,647.

main.cpp

main.cpp

copy
12345678910
#include <iostream> int main() { int goodNumber = 12; int tooLarge = 2147483648; std::cout << "Printing goodNumber: " << goodNumber << std::endl; std::cout << "Printing tooLarge: " << tooLarge << std::endl; }

Tämä johtuu siitä, että kun määrittelet int-muuttujan, se varaa tarkalleen 4 tavua tietokoneesi muistista. Ja luvut, jotka ovat suurempia kuin 2147483647 (tai pienempiä kuin -2147483648), eivät mahdu näihin 4 tavuun. Onneksi käytettävissä on myös muita tietotyyppejä, jotka voivat varata enemmän (tai vähemmän) tilaa tarpeidesi mukaan. Tässä on taulukko:

Tietotyyppi
Arvoalue
Koko
short
-32,768 to 32,767
2 bytes
int
-2,147,483,648 to 2,147,483,647
4 bytes
long
-9223372036854775808 to 9223372036854775807
8 bytes

long soveltuu suurten lukujen tallentamiseen (esim. maailman väkiluku). short voidaan käyttää, jos tiedetään, että luku ei ylitä arvoaluetta -32,76832,767 (esim. käyttäjän iän tallentaminen). short vie vähemmän muistia.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> int main() { short age = 22; int likes = 143200; long population = 8200000000; std::cout << "Age: " << age << std::endl; std::cout << "Likes: " << likes << std::endl; std::cout << "World's population: " << population << std::endl; }

Huomio

Ole tarkkana valitessasi tietotyyppiä. Jos tyypin sallittu arvoalue ylitetään, C++-kääntäjä ei ilmoita siitä, ja saatat saada odottamattoman arvon ilman virheilmoitusta.

Liukuluvut

Yllä mainitut tietotyypit on suunniteltu kokonaislukujen tallentamiseen. Jos yrittäisimme asettaa arvon 1.6 johonkin näistä, saisimme seuraavan tuloksen:

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { // Change the data type to `float` o `double` int num = 1.6; std::cout << num << std::endl; }

int-tyyppi katkaisee luvun desimaaliosan. Tämä käyttäytyminen on sama myös short- ja long-tyypeille. Jos haluat tallentaa liukulukuja (desimaalilukuja), sinun tulee käyttää joko float- tai double-tietotyyppiä.

Tietotyyppi
Tarkkuus
Koko
float
7 desimaalia
4 tavua
double
15 desimaalia
8 tavua

Tässä on esimerkki, jossa käytetään double-tyyppiä luvun 1.6 tallentamiseen.

main.cpp

main.cpp

copy
12345678910
#include <iostream> int main() { float floatNum = 123.45678; double doubleNum = 123.45678; std::cout << "using float:" << floatNum - 123 << std::endl; std::cout << "using double:" << doubleNum - 123 << std::endl; }

Huomio

Koska float-tyypin tarkkuus on vain seitsemän numeroa, luku 123.456789 ylittää jo sen tarkkuuden. Tämä voi johtaa epätarkkoihin tuloksiin (kuten alla olevassa esimerkissä). Siksi on suositeltavaa käyttää oletuksena double-tyyppiä, ellei ole varma, että float-tarkkuus riittää.

On mahdollista käyttää float- tai double-tyyppiä kokonaislukujen tallentamiseen, koska ne ovat desimaalilukuja, joiden desimaaliosa on 0. Hyvänä käytäntönä kuitenkin, jos muuttujaan tallennetaan vain kokonaislukuja (esim. väkiluku tai tykkäykset), tulisi käyttää short/int/long-tyyppejä.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3
some-alt