Mostra notizie nelle discussioni
  • Avatar
    ☺
    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.





<softv>

Pagina generata in 56 millisecondi

Utenti attivi: 10 nell'ultimo minuto, 34 negli ultimi cinque minuti, 77 negli ultimi 15 minuti