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. The tutorial contains a series of lessons that explore numbers and math operations 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:
-
-
for subtraction -
*
per la moltiplicazione -
/
for division
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. The answer is a large negative number because an overflow "wraps around" from the largest possible integer value to the smallest.
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.
Work with the double type
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. Try a slightly more complicated expression with doubles. È 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. The number before the E
is the significand. 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.
Work with decimal types
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:
Se vuoi, prova altre formule.
L'esercitazione interattiva "Numeri in C#" è stata completata. You can select the Tuples and types link to start the next interactive tutorial, or you can visit the .NET site to download the .NET SDK, create a project on your machine, and keep coding. La sezione "Passaggi successivi" ti riporta indietro a questi tutorial.
Per altre informazioni sui numeri in C#, vedere gli articoli seguenti: