Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa esercitazione illustra i tipi numerici in C#. Si scrivono piccole quantità di codice, quindi si compila ed esegue tale codice. L'esercitazione contiene una serie di lezioni che esplorano i numeri e le operazioni matematiche in C#. Queste lezioni illustrano i concetti fondamentali del linguaggio C#.
Suggerimento
Quando un blocco di frammenti di codice include il pulsante "Esegui", il pulsante apre la finestra interattiva o sostituisce il codice esistente nella finestra interattiva. Quando il frammento di codice non include un pulsante "Esegui", è possibile copiare il codice e aggiungerlo alla finestra interattiva corrente.
Esplorare la matematica dei numeri interi
Eseguire il codice seguente nella finestra interattiva.
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Il codice precedente illustra le operazioni matematiche fondamentali con numeri interi. Il int tipo rappresenta un numero intero, un numero intero positivo o negativo. Usi il simbolo + per l'addizione. Altre operazioni matematiche comuni per i numeri interi includono:
-
-per sottrazione -
*per la moltiplicazione -
/per divisione
Per iniziare, esplorare queste diverse operazioni. Modificare la terza riga per provare ognuna di queste operazioni. Ad esempio, per provare la sottrazione, sostituire + con - come illustrato nella riga seguente.
int c = a - b;
Provaci. Selezionare il pulsante "Esegui". Prova a moltiplicare * e dividere /. Puoi anche sperimentare scrivendo più operazioni matematiche nella stessa riga, se vuoi.
Suggerimento
Durante l'esplorazione di C# (o qualsiasi linguaggio di programmazione), si commettono errori durante la scrittura di codice. Il compilatore individua tali errori e li segnala all'utente. Quando l'output contiene messaggi di errore, esaminare attentamente il codice di esempio e il codice nella finestra interattiva per vedere cosa correggere. Questo esercizio consente di apprendere la struttura del codice C#.
Esplorare l'ordine delle operazioni
Il linguaggio C# definisce la precedenza di diverse operazioni matematiche con regole coerenti con le regole apprese in matematica. La moltiplicazione e la divisione hanno la precedenza sull'addizione e la sottrazione. Esplorare questa funzionalità eseguendo il codice seguente nella finestra interattiva:
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
L'output dimostra che la moltiplicazione viene eseguita prima dell'aggiunta.
È possibile forzare un ordine di operazione diverso aggiungendo parentesi intorno all'operazione o alle operazioni da eseguire per prime. Aggiungere le righe seguenti alla finestra interattiva:
d = (a + b) * c;
Console.WriteLine(d);
Esplora di più combinando molte operazioni diverse. Sostituire la quarta riga nel codice precedente con un risultato simile al seguente:
d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);
È possibile notare un comportamento interessante per i numeri interi. La divisione integer produce sempre un risultato intero, anche quando si prevede che il risultato includa una parte decimale o frazionaria.
Provare il codice seguente:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Esplora la precisione e i limiti degli interi
L'ultimo esempio ha mostrato che la divisione integer tronca il risultato. È possibile ottenere il resto usando l'operatore resto , il % carattere :
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
Il tipo intero C# differisce dagli interi matematici in un altro modo: il int tipo ha limiti minimi e massimi. Provare il codice seguente per visualizzare questi limiti:
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Se un calcolo produce un valore che supera tali limiti, si dispone di una condizione di underflow o overflow . La risposta sembra estendersi da un limite all'altro. Per un esempio, aggiungere queste due righe nella finestra interattiva:
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Si noti che la risposta è molto vicina all'intero minimo (negativo). È uguale a min + 2. L'operazione di addizione ha superato i limiti dei valori consentiti per i numeri interi. La risposta è un numero negativo elevato perché un overflow "torna indietro" dal valore intero più grande possibile al più piccolo.
Esistono altri tipi numerici con limiti e precisione diversi che è possibile usare quando il int tipo non soddisfa le proprie esigenze. Esaminiamo ora questi tipi di numeri.
Usare il tipo double
Il double tipo numerico rappresenta un numero a virgola mobile a precisione doppia. Questi termini potrebbero essere nuovi per l'utente. Un numero a virgola mobile è utile per rappresentare numeri non interi che possono essere di grande o piccola entità.
La precisione doppia è un termine relativo che descrive il numero di cifre binarie usate per archiviare il valore. I numeri a precisione doppia hanno due volte il numero di cifre binarie come precisione singola. Nei computer moderni è più comune usare la precisione doppia rispetto ai numeri di precisione singola.
I numeri a precisione singola vengono dichiarati usando la float parola chiave . Esploriamo. Eseguire il codice seguente e visualizzare il risultato:
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Si noti che la risposta include la parte decimale del quoziente. Prova un'espressione leggermente più complessa con double. È possibile usare i valori seguenti o sostituire altri numeri:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
L'intervallo di un valore di tipo double è maggiore di quello dei valori di tipo intero. Provare il codice seguente nella finestra interattiva:
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Questi valori vengono stampati nella notazione scientifica. Il numero prima di E è il significando. Il numero dopo il E è l'esponente, come potenza di 10.
Proprio come i numeri decimali in matematica, i valori double in C# possono avere errori di arrotondamento. Provare questo codice:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Si sa che 0.3 è 3/10 e non esattamente uguale a 1/3. Analogamente, 0.33 è 33/100. Tale valore è più vicino a 1/3, ma non è ancora esatto. Indipendentemente dal numero di cifre decimali aggiunte, rimane un errore di arrotondamento.
Sfida
Provare altri calcoli con numeri di grandi dimensioni, numeri piccoli, moltiplicazione e divisione usando il double tipo . Provare calcoli più complessi.
Lavorare con i tipi decimali
C'è un altro tipo da imparare: il tipo decimal. Il decimal tipo ha un intervallo più piccolo, ma maggiore precisione rispetto a double. Diamo un'occhiata:
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Si noti che l'intervallo è minore del double tipo . È possibile visualizzare la maggiore precisione con il tipo decimale provando il codice seguente:
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Si noti che la matematica che usa il tipo decimale ha più cifre a destra del separatore decimale.
Il M suffisso nei numeri è il modo in cui si indica che una costante deve usare il decimal tipo . In caso contrario, il compilatore presuppone il double tipo .
Annotazioni
La lettera M è stata scelta come lettera più visivamente distinta tra le double parole chiave e decimal .
Sfida
Scrivere codice che calcola l'area di un cerchio il cui raggio è di 2,50 centimetri. Tenere presente che l'area di un cerchio è il raggio moltiplicato per PI. Un hint: .NET contiene una costante per PI, Math.PI che è possibile usare per tale valore.
Math.PI, come tutte le costanti dichiarate nello spazio dei nomi System.Math, è un double valore. Per questo motivo, è consigliabile usare double anziché decimal i valori per questa sfida.
Si dovrebbe ottenere una risposta tra 19 e 20.
Dopo aver provato, aprire il riquadro dei dettagli per vedere come si è fatto:
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Se vuoi, prova altre formule.
L'esercitazione interattiva "Numeri in C#" è stata completata. È possibile selezionare il collegamento Tuple e tipi per avviare l'esercitazione interattiva successiva oppure visitare il sito .NET per scaricare .NET SDK, creare un progetto nel computer e continuare a scrivere codice. La sezione "Passaggi successivi" ti riporta indietro a questi tutorial.
Per altre informazioni sui numeri in C#, vedere gli articoli seguenti: