Esercizio - Scoprire i tipi a virgola mobile
- 8 minuti
In questo esercizio vengono usati tipi di dati a virgola mobile per informazioni sulle differenze tra ogni tipo di dati.
Un valore a virgola mobile è un tipo di valore semplice che rappresenta i numeri a destra della posizione decimale. A differenza dei numeri integrali, esistono altre considerazioni oltre i valori massimi e minimi che è possibile archiviare in un determinato tipo a virgola mobile.
Valutare i tipi a virgola mobile
Prima di tutto, è necessario considerare le cifre di precisione consentite per ogni tipo. La precisione è il numero di posizioni di valore archiviate dopo il separatore decimale.
In secondo luogo, è necessario considerare il modo in cui vengono archiviati i valori e l'impatto sull'accuratezza del valore. Ad esempio, float e double i valori vengono archiviati internamente in un formato binario (base 2), mentre decimal è archiviato in un formato decimale (base 10). Perché è importante?
L'esecuzione di calcoli matematici sui valori a virgola mobile binaria può produrre risultati che potrebbero sorprendere se si usa la matematica decimale (base 10). Spesso, la matematica a virgola mobile binaria è un'approssimazione del valore reale. Pertanto, float e double sono utili perché un numero elevato può essere archiviato usando un footprint di memoria ridotto. Tuttavia, float e double deve essere usato solo quando è utile un'approssimazione. Ad esempio, essere pochi millesimi quando si calcola lo splatter di una palla di neve in un videogioco è abbastanza vicino.
Quando è necessaria una risposta più precisa, è consigliabile usare decimal. Ogni valore di tipo decimal ha un footprint di memoria relativamente elevato, ma l'esecuzione di operazioni matematiche offre un risultato più preciso. Pertanto, è consigliabile usare decimal quando si usano dati finanziari o qualsiasi scenario in cui è necessario un risultato accurato da un calcolo.
Usare le proprietà MinValue e MaxValue per ogni tipo float firmato
Eliminare o usare l'operatore di commento riga
//per impostare come commento tutto il codice degli esercizi precedenti.Per visualizzare gli intervalli di valori per i vari tipi di dati, aggiornare il codice nell'editor di Visual Studio Code come indicato di seguito:
Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
Nel menu File di Visual Studio Code, selezionare Salva.
Il file Program.cs deve essere salvato prima di compilare o eseguire il codice.
Nel pannello EXPLORER, per aprire un terminale nel percorso della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri nel terminale integrato.
Verrà aperto un pannello del terminale con un prompt dei comandi che indica che il terminale è aperto al percorso della cartella TestProject.
Al prompt dei comandi del terminale, per eseguire il codice, digitare dotnet run e quindi premere INVIO.
Se viene visualizzato un messaggio che indica che non è stato possibile trovare un progetto da eseguire, assicurarsi che il prompt dei comandi del terminale visualizzi il percorso previsto della cartella TestProject. Ad esempio:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Verrà visualizzato l'output seguente:
Floating point types: float : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision) double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision) decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
Come si può notare, float e double usare una notazione diversa da quella usata da decimal per rappresentare i valori più grandi e più piccoli possibili. Ma cosa significa questa notazione?
Deciframento di valori a virgola mobile di grandi dimensioni
Poiché i tipi a virgola mobile possono contenere numeri di grandi dimensioni con precisione, i valori possono essere rappresentati usando la "notazione E", che è una forma di notazione scientifica che significa "volte 10 elevato alla potenza di". Quindi, un valore come 5E+2 sarebbe il valore 500 perché equivale a 5 * 10^2 o 5 x 102.
Riepilogo
- Un tipo a virgola mobile è un tipo di dati valore semplice che può contenere numeri frazionari.
- La scelta del tipo a virgola mobile corretta per l'applicazione richiede di considerare più dei valori massimi e minimi che può contenere. È inoltre necessario considerare il numero di valori che è possibile conservare dopo il decimale, il modo in cui vengono archiviati i numeri e il modo in cui l'archiviazione interna influisce sul risultato delle operazioni matematiche.
- I valori a virgola mobile possono talvolta essere rappresentati usando la "notazione E" quando i numeri aumentano in modo particolare.
- Esiste una differenza fondamentale nel modo in cui il compilatore e il runtime gestiscono
decimalinvece difloatodouble, soprattutto quando si determina la precisione necessaria dalle operazioni matematiche.