Numeriska Datatyper
Heltal
Heltalsdatatyper är de mest använda för heltal. Datatypen int
kan lagra värden inom intervallet -2,147,483,648
till 2,147,483,647
.
main.cpp
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; }
Detta sker eftersom när du deklarerar en int
-variabel, allokeras exakt 4 byte av datorns minne. Och tal över 2147483647
(eller under -2147483648
) får inte plats i dessa 4 byte. Lyckligtvis finns det andra datatyper som kan allokera mer (eller mindre) utrymme efter behov. Här är tabellen:
Datatyp | ||
---|---|---|
short | 2 byte | |
int | 4 byte | |
long | 8 byte |
Det går att använda long
för att lagra stora tal (t.ex. världens befolkning). Det går även att använda short
om det är säkert att talet inte överskrider intervallet -32,768
till 32,767
(t.ex. lagring av en användares ålder). Användning av short
kräver mindre minnesutrymme.
main.cpp
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; }
Obs
Var noga med vilken datatyp du väljer. Om intervallet för en typ överskrids, kommer C++-kompilatorn inte att meddela dig, och du kan få ett oväntat värde utan någon indikation på fel.
Flyttal
Datatyperna ovan är avsedda för att lagra heltal. Om vi försöker tilldela 1.6
till någon av dessa, får vi följande resultat:
main.cpp
12345678#include <iostream> int main() { // Change the data type to `float` o `double` int num = 1.6; std::cout << num << std::endl; }
Datatypen int
trunkerar den decimala delen av ett tal. Detta beteende är detsamma för typerna short
och long
. För att lagra flyttal (decimaltal) bör du använda antingen datatypen float
eller double
.
Datatyp | ||
---|---|---|
float | ||
double |
Här är ett exempel på att använda double
för att lagra 1.6
.
main.cpp
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; }
Obs
Eftersom typen
float
endast har en precision på sju siffror, ligger talet 123.456789 redan utanför dess räckvidd. Detta kan leda till inexakta resultat (som visas i exemplet nedan). Det är därför bättre att användadouble
som standard om du inte är säker på attfloat
har tillräcklig precision.
Det är självklart möjligt att använda float
eller double
för att lagra heltal, eftersom dessa är decimaltal med en decimaldel lika med 0. Dock är det god praxis att använda short
/int
/long
om en variabel endast ska lagra heltalsvärden (t.ex. befolkning eller antal gillamarkeringar).
Tack för dina kommentarer!
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
Can you explain the difference between float and double in more detail?
What happens if I try to store a number outside the range of a data type?
When should I use short, int, or long in my programs?
Awesome!
Completion rate improved to 3.85
Numeriska Datatyper
Svep för att visa menyn
Heltal
Heltalsdatatyper är de mest använda för heltal. Datatypen int
kan lagra värden inom intervallet -2,147,483,648
till 2,147,483,647
.
main.cpp
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; }
Detta sker eftersom när du deklarerar en int
-variabel, allokeras exakt 4 byte av datorns minne. Och tal över 2147483647
(eller under -2147483648
) får inte plats i dessa 4 byte. Lyckligtvis finns det andra datatyper som kan allokera mer (eller mindre) utrymme efter behov. Här är tabellen:
Datatyp | ||
---|---|---|
short | 2 byte | |
int | 4 byte | |
long | 8 byte |
Det går att använda long
för att lagra stora tal (t.ex. världens befolkning). Det går även att använda short
om det är säkert att talet inte överskrider intervallet -32,768
till 32,767
(t.ex. lagring av en användares ålder). Användning av short
kräver mindre minnesutrymme.
main.cpp
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; }
Obs
Var noga med vilken datatyp du väljer. Om intervallet för en typ överskrids, kommer C++-kompilatorn inte att meddela dig, och du kan få ett oväntat värde utan någon indikation på fel.
Flyttal
Datatyperna ovan är avsedda för att lagra heltal. Om vi försöker tilldela 1.6
till någon av dessa, får vi följande resultat:
main.cpp
12345678#include <iostream> int main() { // Change the data type to `float` o `double` int num = 1.6; std::cout << num << std::endl; }
Datatypen int
trunkerar den decimala delen av ett tal. Detta beteende är detsamma för typerna short
och long
. För att lagra flyttal (decimaltal) bör du använda antingen datatypen float
eller double
.
Datatyp | ||
---|---|---|
float | ||
double |
Här är ett exempel på att använda double
för att lagra 1.6
.
main.cpp
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; }
Obs
Eftersom typen
float
endast har en precision på sju siffror, ligger talet 123.456789 redan utanför dess räckvidd. Detta kan leda till inexakta resultat (som visas i exemplet nedan). Det är därför bättre att användadouble
som standard om du inte är säker på attfloat
har tillräcklig precision.
Det är självklart möjligt att använda float
eller double
för att lagra heltal, eftersom dessa är decimaltal med en decimaldel lika med 0. Dock är det god praxis att använda short
/int
/long
om en variabel endast ska lagra heltalsvärden (t.ex. befolkning eller antal gillamarkeringar).
Tack för dina kommentarer!