☺
Programmazione
Scritto da
il 2018-06-02 23:14:47.0 alle 2018-06-02 23:14:47.0
Trollate totali: 9885
Lezione 3 di C#: introduzione ai numeri in virgola mobile
Nelle scorse lezioni abbiamo visto, oltre che il tipo bool, i vari tipi di variabili per numeri interi.
Introduciamo ora i numeri in virgola mobile.
Dò per scontato che sappiate come funzioni l'approssimazione e che conosciate i termini "approssimazione per eccesso" e "approssimazione per difetto" e in quali casi si adotta una o l'altra.
Dò anche per scontato che sappiate cos'è la notazione scientifica e sappiate come funziona.
float
Il float è una variabile di 32 bit per i numeri in virgola mobile.
Può contenere numeri interi o decimali all'interno del seguente intervallo di numeri: da -3.4 × 1038 a +3.4 × 1038.
La precisione del float è pari a 7. Questo, in termini pratici, significa che il numero all'interno di un float può avere al massimo 7 ciffre.
Cosa succede se cerco di inizializzare un float con un numero avente un numero di ciffre superiore a 7?
Innanzitutto, la ciffre dopo le virgola vengono troncate fintanto che il numero non viene ridotto a 7 ciffre. Se troncare tutte le ciffre dopo la virgola non è sufficiente, perché il numero ha comunque troppe ciffre, il float si serve delle notazione scientifica.
Nella notazione scientifica, il numero potrà sempre solo avere 7 ciffre, ma l'esponente può crescere di diversi ordini (fino a 38, come vediamo sopra). Perciò, grazie all'esponente, possiamo arrivare a numeri molto grandi.
Facciamo degli esempi.
1.1234567
Cosa succede se lo metto in una variabile di tipo float?
Il numero di ciffre è pari a 8 (in eccesso di 1, quindi), perciò la ciffra più a destra verrà troncata e il numero verrà approssimato.
Il numero diventerà quindi: 1.123457 (approssimazione per eccesso)
Altro esempio
1.1234564
In questo caso l'approssimazione avviene per difetto, quindi il 4 viene semplicemente troncato e il numero diventa: 1.123456
Altro esempio
11.1234567
In questo numero ci sono due ciffre in eccesso: quindi il 7 e il 6 vengono troncati e il numero approssimato per eecesso.
Diventerà: 11.12346
Altro esempio
1111111.6234567
Per ridurre il numero a 7 ciffre, è necessario troncare tutte le ciffre dopo la virgola. Tutte le ciffre dopo la virgola vengono troncate e il numero viene approssimato per eccesso, quindi diventa: 1111112
Altro esempio
1111111.2234567
Avviene la stessa cosa, ma il numero viene approssimato per difetto, quindi resta: 1111111
Altro esempio
11111111.1234567
Dopo aver troncato tutti i numeri dopo la virgola, il numero di ciffre resta comunque eccessivo, quindi si passa alla notazione scientifica.
Cominciamo a prima di tutto a troncare tutte le ciffre dopo la virgola e approssimare come dovuto. Otteniamo: 11111111
Ora dobbiamo esprimere questo numero con la notazione scientifica.
Diventa: 1.11111111 x 108
C'è un problema: il numero di ciffre è pari a 9, quindi superiore a 7. Quindi devo troncare due ciffre. Diventa: 1.111111 x 108
Quindi, espresso in notazione decimale: 11111110
Questi esempi ci fanno intuire che quando lavoriamo con i numeri in virgola mobile dobbiamo porre attenzione a usarli entro i limiti della loro precisione, perché altrimenti possiamo avere delle perdite di dati.