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 byteshort— 2 byteint— 4 bytelong— 4 o 8 bytelong 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,295Interi 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 decimalidouble— 64 bit, circa 15 cifre decimalilong 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 approximatelyConfrontare 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 →
intosize_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
- Tipi interi e a virgola mobile a confronto
- L'header cmath: pow, sqrt, abs, round
- Numeri casuali con l'header random
- Limiti numerici e comportamento dell'overflow