C Academy · Lektion

Konvertering mellem heltal og float

Problemer med præcision

Lektion 3 af 413 trin

Konvertering mellem heltal og float er en gratis C Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig 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 heltal (eksakte, uden brøkdel) og flydende tal (tilnærmede, med brøkdel). Konvertering mellem dem ændrer, hvordan en værdi gemmes.

#include <stdio.h>
int main(void) {
    int i = 10;
    double d = 10.5;
    printf("%d %.1f\n", i, d);
    return 0;
}

Udvidelse fra int til double

De fleste int-værdier kan repræsenteres nøjagtigt i en double, så udvidelsen er sikker.

#include <stdio.h>
int main(void) {
    int n = 1000;
    double d = n;
    printf("d = %.1f\n", d);
    return 0;
}

Indsnævring fra double til int

Ved konvertering fra double til int afkortes værdien mod nul, og der kan gå information tabt.

#include <stdio.h>
int main(void) {
    double d = 12.75;
    int n = (int)d;
    printf("n = %d\n", n);
    return 0;
}

Afkortning af negative tal

Afkortning mod nul betyder, at -2.9 bliver til -2, ikke -3.

#include <stdio.h>
int main(void) {
    double d = -2.9;
    int n = (int)d;
    printf("n = %d\n", n);
    return 0;
}

Præcision for float og double

float indeholder omkring 7 betydende cifre, mens double indeholder omkring 15. Konvertering fra double til float medfører tab af præcision.

#include <stdio.h>
int main(void) {
    double d = 3.14159265358979;
    float f = (float)d;
    printf("%.5f\n", f);
    return 0;
}

Stor int til float

En meget stor int kan muligvis ikke repræsenteres nøjagtigt som en float, hvilket giver et afrundet resultat.

#include <stdio.h>
int main(void) {
    int big = 16777217;
    float f = (float)big;
    printf("%.1f\n", f);
    return 0;
}

Afrunding kontra afkortning

Casts afkorter. Hvis du vil afrunde, skal du først tilføje 0.5 for positive værdier eller bruge biblioteksfunktioner.

#include <stdio.h>
int main(void) {
    double d = 4.6;
    int truncated = (int)d;
    int rounded = (int)(d + 0.5);
    printf("%d %d\n", truncated, rounded);
    return 0;
}

Beregning af gennemsnit

Ved beregning af gennemsnittet af heltal skal du bruge flydende division for at bevare brøkdelen.

#include <stdio.h>
int main(void) {
    int sum = 7, count = 2;
    double avg = (double)sum / count;
    printf("avg = %.2f\n", avg);
    return 0;
}

Faldgrube ved lighed mellem flydende tal

Da flydende tal er tilnærmede, er det risikabelt at sammenligne dem med ==. Sammenlign dem inden for en lille tolerance.

#include <stdio.h>
#include <math.h>
int main(void) {
    double a = 0.1 + 0.2;
    if (fabs(a - 0.3) < 1e-9)
        printf("close enough\n");
    return 0;
}

Blanding i betingelser

Ved sammenligning af en int med en double forfremmes int-værdien, så sammenligningen udføres med flydende tal.

#include <stdio.h>
int main(void) {
    int n = 3;
    double d = 3.5;
    if (n < d)
        printf("3 < 3.5\n");
    return 0;
}

Valg af den rigtige type

Brug heltal til tællere og indeks, og brug flydende tal til målinger og forhold.

#include <stdio.h>
int main(void) {
    int items = 4;
    double pricePer = 2.5;
    printf("total = %.2f\n", items * pricePer);
    return 0;
}

Hurtig kontrol

Test din forståelse af konverteringer mellem heltal og flydende tal.

Opsummering: Konverteringer mellem heltal og flydende tal

Du har lært, hvordan tal ændrer sig på tværs af typer.

  • int til double udvides normalt sikkert
  • double til int afkortes mod nul
  • float bevarer færre cifre end double
  • Afrund ved at tilføje 0.5 eller bruge biblioteksfunktioner
  • Undgå == på floats; brug en tolerance
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
39
Lektioner
144

Ofte stillede spørgsmål

Er lektionen “Konvertering mellem heltal og float” gratis?

Ja — hele teksten til “Konvertering mellem heltal og float” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C Academy-kurset, skal du opgradere til CoddyKit PRO. C Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Konvertering mellem heltal og float”?

Problemer med 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 3 af 4.

Hvor lang tid tager lektionen “Konvertering mellem heltal og float”?

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. Implicitte konverteringer
  2. Eksplicitte casts
  3. Konvertering mellem heltal og float
  4. Konverteringsfaldgruber
← Tilbage til C Academy