Modificare numeri a virgola mobile e integrali
Questa esercitazione presenta i tipi numerici in C# in modo interattivo, tramite il browser. Si scriverà codice C# e si vedranno i risultati della compilazione e dell'esecuzione del codice. L'esercitazione contiene una serie di lezioni che illustrano l'uso dei numeri e le operazioni matematiche in C#. Queste lezioni presentano le nozioni fondamentali del linguaggio C#.
Suggerimento
Per incollare un frammento di codice nella modalità messa a fuoco è consigliabile usare le scelte rapide da tastiera (CTRL + V o CMD + V).
Esplorare le operazioni matematiche su interi
Eseguire il codice seguente nella finestra interattiva. Selezionare il pulsante Attiva modalità messa a fuoco. Digitare quindi il blocco di codice seguente nella finestra interattiva e selezionare Esegui:
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Se si lavora nell'ambiente in uso, è consigliabile seguire in alternativa le istruzioni per la versione locale.
Questa è una delle operazioni matematiche fondamentali sui numeri interi. Il tipo int
rappresenta un intero, ovvero un numero intero positivo o negativo. Per l'addizione si usa il simbolo +
. Altre operazioni matematiche comuni per gli interi includono:
-
per la sottrazione*
per la moltiplicazione/
per la divisione
Suggerimento
In tutte le parti di questa esercitazione interattiva è possibile esplorare liberamente i contenuti modificando il codice scritto nella finestra interattiva. Questa esercitazione offre esempi che è possibile provare a ogni passaggio.
Per iniziare, esplorare le diverse operazioni. Modificare la terza riga per provare ognuna di queste operazioni. Dopo ogni modifica, selezionare il pulsante Esegui.
Sottrazione:
int c = a - b;
Moltiplicazione:
int c = a * b;
Divisione:
int c = a / b;
È anche possibile sperimentare scrivendo più operazioni matematiche nella stessa riga.
Suggerimento
Mentre si impara a usare C# (o qualsiasi linguaggio di programmazione) sicuramente si commetteranno errori durante la scrittura del codice. Il compilatore troverà questi errori e li segnalerà. Quando l'output contiene messaggi di errore, esaminare attentamente il codice di esempio e il codice nella finestra interattiva per scoprire cosa correggere. Questo esercizio sarà utile per imparare la struttura del codice C#.
Esplorare l'ordine delle operazioni
Il linguaggio C# stabilisce un ordine di precedenza per le diverse operazioni matematiche, con regole coerenti con quelle della matematica. La moltiplicazione e la divisione hanno la precedenza rispetto ad addizione e sottrazione. Esplorare questo concetto 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'addizione.
È possibile forzare un ordine diverso per le operazioni racchiudendo tra parentesi l'operazione o le operazioni che si vuole eseguire per prime:
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Sperimentare ulteriormente combinando molte operazioni diverse. Sostituire la quarta riga sopra con una simile alla seguente:
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
È possibile che si sia notato un comportamento interessante per gli interi. La divisione di interi genera sempre un risultato intero, anche quando ci si aspetta che il risultato includa una parte decimale o frazionaria.
Se questo comportamento non è stato notato, provare il codice seguente:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Selezionare di nuovo Esegui per visualizzare i risultati.
Esplorare la precisione e i limiti delle operazioni su interi
L'ultimo esempio dimostra che la divisione di interi tronca il risultato.
È possibile ottenere il resto usando l'operatore di resto, ovvero 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 integer in C# è diverso dagli interi matematici per un altro aspetto, ovvero per il tipo int
esistono limiti minimi e massimi. Eseguire questo codice nella finestra interattiva 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 questi limiti, si genera una condizione di underflow o overflow. La risposta sembra proseguire da un limite all'altro. Aggiungere queste due righe nella finestra interattiva per vedere un esempio:
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 causato l'overflow dei valori consentiti per gli interi.
La risposta è un numero negativo molto grande, poiché un overflow "ritorna a capo" proseguendo dal valore intero più grande possibile a quello più piccolo.
Esistono altri tipi numerici con limiti e precisione diversi che è possibile usare quando il tipo int
non soddisfa le proprie esigenze. Nel passaggio successivo si esamineranno questi tipi di numeri.
Usare il tipo double
Il tipo numerico double
rappresenta un numero a virgola mobile a precisione doppia. Questi termini potrebbero risultare sconosciuti. Un numero a virgola mobile è utile per rappresentare numeri non integrali, con ordine di grandezza molto grande o molto piccolo. Precisione doppia è un termine relativo che descrive il numero di cifre binarie usate per archiviare il valore. I numeri a precisione doppia hanno il doppio delle cifre binarie di quelli a precisione singola. Nei computer moderni è più comune usare i numeri a precisione doppia rispetto ai numeri a precisione singola. I numeri a precisione singola vengono dichiarati usando la parola chiave float
.
Per iniziare a esplorare questo tipo, provare il codice seguente nella finestra interattiva ed esaminare 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. Provare ora un'espressione leggermente più complessa con valori double:
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
L'intervallo di un valore double è molto maggiore rispetto ai valori integer. 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 con la notazione scientifica. Il numero a sinistra di E
rappresenta il significando. Il numero a destra è l'esponente, come potenza di 10.
Come per i numeri decimali in matematica, i valori double in C# possono presentare errori di arrotondamento. Provare questo codice:
double third = 1.0 / 3.0;
Console.WriteLine(third);
Si sa che 0.3
è 3/10
e non equivale esattamente a 1/3
. In modo analogo, 0.33
è 33/100
. È più vicino a 1/3
, ma comunque non esatto.
Esercizio
Provare altri calcoli con numeri grandi, numeri piccoli, moltiplicazione e divisione usando il tipo double
. Provare calcoli più complessi.
Usare i tipi decimali
Sono già stati presentati i tipi numerici di base in C#, ovvero integer e double. C'è un altro tipo da conoscere, ovvero decimal
. Il tipo decimal
ha un intervallo più piccolo, ma maggiore precisione di double
. Esaminare il codice seguente:
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 rispetto al tipo double
. Per vedere la maggiore precisione del tipo decimal, provare 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 le operazioni matematiche con il tipo decimal includono più cifre a destra del separatore decimale.
Il suffisso M
nei numeri è il modo in cui si indica che una costante deve usare il tipo decimal
. In caso contrario, il compilatore presuppone il tipo double
.
Nota
La lettera M
è stata scelta come la più visivamente distinta tra le parole chiave double
e decimal
.
Esercizio
Dopo aver esaminato i diversi tipi numerici, scrivere codice che calcola l'area di un cerchio con raggio di 2,5 cm. Ricordarsi che l'area di un cerchio si calcola moltiplicando il quadrato del raggio per Pi greco. Suggerimento: .NET contiene una costante per Pi greco, Math.PI, che è possibile usare per tale valore. Math.PI, come tutte le costanti dichiarate nello spazio dei nomi System.Math
, è un valore double
. Per questo motivo, è consigliabile usare valori double
anziché decimal
per questa sfida.
Si otterrà una risposta compresa tra 19 e 20.
Completare l'esercizio
I risultati ottenuti sono simili a questi?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
È anche possibile provare alcune altre formule.
Congratulazioni!
È stata completata l'esercitazione interattiva "Numeri in C#". È possibile selezionare il collegamento Rami e cicli qui sotto per avviare la prossima esercitazione interattiva oppure visitare il sito .NET per scaricare .NET SDK, creare un progetto nel proprio computer e continuare a scrivere codice. La sezione "Passaggi successivi" consente di tornare a queste esercitazioni.
Per altre informazioni sui numeri in C#, vedere gli articoli seguenti:
Hai un problema con questa sezione? In caso di problemi, fornisci feedback per contribuire al miglioramento della sezione.