0Pricing
C++ Academy · Lezione

Tipi interi e a virgola mobile a confronto

Scelga il tipo numerico corretto comprendendo dimensioni, intervalli e compromessi sulla precisione

Tipi interi e a virgola mobile a confronto è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 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 numerici

C++ dispone di due famiglie di tipi numerici: gli interi (senza frazioni, esatti) e i numeri in virgola mobile (approssimati, con frazioni). Scelga la famiglia giusta per il compito.

Tipi interi

Tipi interi incorporati e dimensioni tipiche nei sistemi a 64 bit:

  • char — 1 byte
  • short — 2 byte
  • int — 4 byte
  • long — 4 o 8 byte
  • long long — 8 byte

Signed e unsigned

Aggiunga unsigned per eliminare l'intervallo dei valori negativi. L'aritmetica senza segno usa l'aritmetica modulare modulo 2^N: a volte è utile, ma spesso può causare errori difficili da individuare.

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

Interi a larghezza fissa

Utilizzi i tipi in <cstdint> quando ha bisogno di dimensioni esatte, ad esempio per protocolli, formati di file o portabilità tra piattaforme.

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

Tipi in virgola mobile

Tre tipi in virgola mobile con precisione crescente:

  • float — 32 bit, circa 7 cifre decimali
  • double — 64 bit, circa 15 cifre decimali
  • long double — in genere 80 o 128 bit

Formato IEEE 754

I numeri in virgola mobile seguono lo standard IEEE 754: segno, esponente e mantissa. Possono rappresentare valori molto grandi e molto piccoli, ma non in modo esatto.

Problemi dei numeri in virgola mobile

La maggior parte dei numeri decimali non può essere rappresentata esattamente in binario. 0.1 + 0.2 non equivale esattamente a 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

Confrontare i numeri in virgola mobile in sicurezza

Non confronti mai i numeri in virgola mobile con ==. Li confronti verificando che la differenza rientri in una piccola tolleranza (epsilon).

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

Valori speciali in virgola mobile

I numeri in virgola mobile hanno tre valori speciali: NaN (non è un numero), +inf e -inf. Utilizzi i predicati in <cmath> per verificarli.

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

Quando usare ciascun tipo

Scelga in base al dominio:

  • Conteggi e indici → int o size_t
  • Calcoli scientifici o grafici → double
  • Denaro → mai double! Utilizzi interi scalati (centesimi) o una libreria decimale

Le dimensioni dei tipi variano in base alla piattaforma

Lo standard garantisce solo dimensioni minime. int può avere 16, 32 o 64 bit. Per la portabilità, utilizzi i tipi a larghezza fissa di <cstdint> nelle strutture dati.

Verifica rapida

Quale tipo dovrebbe utilizzare per rappresentare con precisione i valori monetari?

Riepilogo

Gli interi sono esatti, mentre i numeri in virgola mobile sono approssimati. Scelga int o interi a larghezza fissa per i conteggi, double per i calcoli scientifici e non utilizzi mai i numeri in virgola mobile per il denaro. Confronti questi numeri con una tolleranza, mai con ==.

Domande Frequenti

La lezione «Tipi interi e a virgola mobile a confronto» è gratuita?

Sì — il testo completo di «Tipi interi e a virgola mobile a confronto» è 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 «Tipi interi e a virgola mobile a confronto»?

Scelga il tipo numerico corretto comprendendo dimensioni, intervalli e compromessi sulla 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 1 di 4.

Quanto tempo richiede la lezione «Tipi interi e a virgola mobile a confronto»?

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. Tipi interi e a virgola mobile a confronto
  2. L'header cmath: pow, sqrt, abs, round
  3. Numeri casuali con l'header random
  4. Limiti numerici e comportamento dell'overflow
← Torna a C++ Academy