0Pricing
C Academy · Lezione

Conversioni tra interi e float

Problemi di precisione

Conversioni tra interi e float è una lezione C Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C Academy include 4 lezioni in totale.

Due mondi dei numeri

C dispone di interi, esatti e senza frazione, e di numeri in virgola mobile, approssimati e con una frazione. Convertire un tipo nell'altro cambia il modo in cui viene memorizzato un valore.

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

Ampliare da int a double

La maggior parte dei valori int può essere rappresentata esattamente in un double, quindi l'ampliamento è sicuro.

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

Ridurre da double a int

Passare da double a int tronca verso zero e può causare una perdita di informazioni.

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

Troncamento dei numeri negativi

Troncare verso zero significa che -2.9 diventa -2, non -3.

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

Precisione di float e double

float contiene circa 7 cifre significative, mentre double ne contiene circa 15. Convertire un double in float comporta una perdita di precisione.

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

Da int grande a float

Un int molto grande potrebbe non essere rappresentabile esattamente in un float, producendo un risultato arrotondato.

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

Arrotondamento e troncamento

Il cast tronca. Per arrotondare, aggiunga prima 0.5 per i valori positivi oppure usi le funzioni della libreria.

#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;
}

Calcolo della media

Per calcolare la media di interi è necessaria una divisione in virgola mobile, così da conservare la frazione.

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

Problemi del confronto tra numeri in virgola mobile

Poiché i numeri in virgola mobile sono approssimati, confrontarli con == è rischioso. Li confronti entro una piccola tolleranza.

#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;
}

Tipi misti nelle condizioni

Confrontando un int con un double, l'int viene promosso, quindi il confronto avviene in virgola mobile.

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

Scegliere il tipo giusto

Usi gli interi per conteggi e indici; usi i numeri in virgola mobile per misure e rapporti.

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

Verifica rapida

Verifichi la Sua comprensione delle conversioni tra interi e numeri in virgola mobile.

Riepilogo: conversioni tra interi e numeri in virgola mobile

Ha imparato come cambiano i numeri passando da un tipo all'altro.

  • Da int a double il valore viene generalmente ampliato in modo sicuro
  • Da double a int il valore viene troncato verso zero
  • float conserva meno cifre di double
  • Arrotondi aggiungendo 0.5 o usando le funzioni della libreria
  • Eviti == sui numeri in virgola mobile; usi una tolleranza

Domande Frequenti

La lezione «Conversioni tra interi e float» è gratuita?

Sì — il testo completo di «Conversioni tra interi e float» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C Academy, passa a CoddyKit PRO. Il corso C Academy include 4 lezioni in totale.

Cosa imparerò in «Conversioni tra interi e float»?

Problemi di precisione Eserciti C Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C Academy?

Non è richiesta alcuna esperienza precedente. C Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Conversioni tra interi e float»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C Academy?

Sì. Ogni lezione C Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Conversioni implicite
  2. Cast espliciti
  3. Conversioni tra interi e float
  4. Problemi nelle conversioni
← Torna a C Academy