C++ Academy · Lektion

Heltalstyper kontra flydende taltyper

Vælg den rigtige numeriske type ved at forstå størrelser, intervaller og afvejninger ved præcision

Lektion 1 af 413 trin

Heltalstyper kontra flydende taltyper er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.

To talverdener

C++ har to familier af numeriske typer: heltal (ingen brøker, eksakte) og flydende komma (approksimative, med brøker). Vælg den rigtige familie til opgaven.

Heltalstyper

Indbyggede heltalstyper og typiske størrelser på 64-bit-systemer:

  • char — 1 byte
  • short — 2 bytes
  • int — 4 bytes
  • long — 4 eller 8 bytes
  • long long — 8 bytes

Signed kontra unsigned

Tilføj unsigned for at fjerne det negative område. Usigneret aritmetik går rundt modulo 2^N — nogle gange nyttigt, men ofte en fælde.

unsigned int u = 0;
u -= 1;  // wraps around to 4,294,967,295

Heltal med fast bredde

Brug typerne i <cstdint>, når du har brug for præcise størrelser — for protokoller, filformater eller flytbarhed mellem platforme.

#include <cstdint>
int8_t   tiny  = 100;
int32_t  word  = 100000;
int64_t  big   = 1LL << 40;
uint64_t huge  = 18446744073709551615ULL;

Flydende kommatyper

Tre flydende kommatyper med stigende præcision:

  • float — 32 bit, omkring 7 decimalcifre
  • double — 64 bit, omkring 15 decimalcifre
  • long double — typisk 80 eller 128 bit

IEEE 754-formatet

Flydende kommatal følger IEEE 754-standarden: fortegn, eksponent, mantisse. De kan repræsentere meget store og meget små værdier, men ikke eksakt.

Faldgruber ved flydende komma

De fleste decimaltal kan ikke repræsenteres eksakt i binær form. 0.1 + 0.2 er ikke nøjagtigt 0.3.

double sum = 0.1 + 0.2;
std::cout << (sum == 0.3);   // false on most systems
std::cout << sum;            // 0.3 but printed approximately

Sikker sammenligning af flydende kommatal

Sammenlign aldrig flydende kommatal med ==. Sammenlign inden for en lille tolerance (epsilon).

bool approxEqual(double a, double b, double eps = 1e-9) {
    return std::abs(a - b) < eps;
}

Særlige værdier for flydende komma

Flydende kommatal har tre særlige værdier: NaN (ikke et tal), +inf og -inf. Brug prædikaterne i <cmath> til at kontrollere dem.

#include <cmath>
double x = std::sqrt(-1.0);
if (std::isnan(x)) std::cout << "Not a number";
if (std::isinf(x)) std::cout << "Infinity";

Hvornår skal de enkelte typer bruges?

Vælg ud fra anvendelsesområdet:

  • Tællinger og indekser → int eller size_t
  • Videnskabelig eller grafisk matematik → double
  • Penge → aldrig double! Brug heltal med skalerede værdier (øre) eller et decimalbibliotek

Typestørrelser varierer efter platform

Standarden garanterer kun minimumsstørrelser. int kan være 16, 32 eller 64 bit. Brug typer med fast bredde fra <cstdint> i datastrukturer for at opnå flytbarhed.

Hurtigt tjek

Hvilken type bør du bruge til at repræsentere pengeværdier præcist?

Opsummering

Heltal er eksakte, mens flydende kommatal er approksimative. Vælg int eller heltal med fast bredde til tællinger, double til videnskabelig matematik, og brug aldrig flydende kommatal til penge. Sammenlign flydende kommatal med en tolerance, aldrig med ==.

Gratis at komme i gang

Lær C++ med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “Heltalstyper kontra flydende taltyper” gratis?

Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “Heltalstyper kontra flydende taltyper”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Heltalstyper kontra flydende taltyper”?

Vælg den rigtige numeriske type ved at forstå størrelser, intervaller og afvejninger ved præcision Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på C++ Academy?

Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Heltalstyper kontra flydende taltyper”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne C++ Academy-lektion?

Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Heltalstyper kontra flydende taltyper
  2. Headeren cmath: pow, sqrt, abs, round
  3. Tilfældige tal med headeren random
  4. Numeriske grænser og overflow-adfærd
← Tilbage til C++ Academy