Heltalstyper kontra flydende taltyper
Vælg den rigtige numeriske type ved at forstå størrelser, intervaller og afvejninger ved præcision
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 byteshort— 2 bytesint— 4 byteslong— 4 eller 8 byteslong 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,295Heltal 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 decimalcifredouble— 64 bit, omkring 15 decimalcifrelong 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 approximatelySikker 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 →
intellersize_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 ==.
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
- Heltalstyper kontra flydende taltyper
- Headeren cmath: pow, sqrt, abs, round
- Tilfældige tal med headeren random
- Numeriske grænser og overflow-adfærd