Exerciții - Descoperiți tipuri de puncte flotante
- 8 minute
În acest exercițiu, lucrați cu tipurile de date în virgulă mobilă pentru a afla despre diferențele nuanțate dintre fiecare tip de date.
O virgulă mobilă este un tip de valoare simplă care reprezintă numerele din dreapta zecimalei. Spre deosebire de numerele integrale, există și alte considerații dincolo de valorile maxime și minime pe care le puteți stoca într-un anumit tip de virgulă mobilă.
Evaluarea tipurilor în virgulă mobilă
În primul rând, trebuie să luați în considerare cifrele de precizie pe care le permite fiecare tip. Precizia este numărul de valori stocate după virgulă zecimală.
În al doilea rând, trebuie să luați în considerare modul în care sunt stocate valorile și impactul asupra acurateței valorii. De exemplu, float iar double valorile sunt stocate intern într-un format binar (baza 2), în timp ce decimal sunt stocate într-un format zecimal (baza 10). De ce contează asta?
Efectuarea matematicii pe valori binare în virgulă mobilă poate produce rezultate care vă pot surprinde dacă sunteți obișnuit cu matematica zecimală (baza 10). Adesea, matematica binară în virgulă mobilă este o aproximare a valorii reale. Prin urmare, și sunt utiledouble, float deoarece numerele mari pot fi stocate folosind o amprentă mică de memorie. Cu toate acestea, float și double ar trebui să fie folosit numai atunci când o aproximare este utilă. De exemplu, a fi cu câteva miimi de distanță atunci când calculați stropirea unui bulgăre de zăpadă într-un joc video este suficient de aproape.
Când aveți nevoie de un răspuns mai precis, ar trebui să utilizați decimal. Fiecare valoare de tip decimal are o amprentă de memorie relativ mare, cu toate acestea, efectuarea operațiunilor matematice vă oferă un rezultat mai precis. Deci, ar trebui să utilizați decimal atunci când lucrați cu date financiare sau orice scenariu în care aveți nevoie de un rezultat precis dintr-un calcul.
Utilizarea proprietăților MinValue și MaxValue pentru fiecare tip float cu semn
Ștergeți sau utilizați operatorul de comentarii de linie
//pentru a comenta întregul cod din exercițiile anterioare.Pentru a vedea intervalele de valori pentru diferitele tipuri de date, actualizați codul în Editorul de cod Visual Studio după cum urmează:
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)");
În meniul Fișier Visual Studio Code, selectați Salvare.
Fișierul Program.cs trebuie salvat înainte de construirea sau rularea codului.
În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat.
Un panou terminal ar trebui să se deschidă și ar trebui să includă o linie de comandă care arată că Terminal este deschis la locația folderului TestProject.
În linia de comandă Terminal, pentru a rula codul, tastați run dotnet apoi apăsați pe Enter.
Dacă vedeți un mesaj care spune "Nu s-a putut găsi un proiect de rulat", asigurați-vă că linia de comandă Terminal afișează locația așteptată a folderului TestProject. De exemplu:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ar trebui să vedeți următoarea ieșire:
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)
După cum puteți vedea, float și double utilizați o notație diferită de cea folosită de decimal pentru a reprezenta cele mai mari și cele mai mici valori posibile. Dar ce înseamnă această notație?
Descifrarea valorilor mari în virgulă mobilă
Deoarece tipurile în virgulă mobilă pot conține numere mari cu precizie, valorile lor pot fi reprezentate folosind "notația E", care este o formă de notație științifică care înseamnă "ori 10 ridicat la puterea de". Deci, o valoare precum 5E+2 ar fi valoarea 500 pentru că este echivalentul a 5 * 10^2 sau 5 x 102.
Recapitulare
- Un tip în virgulă mobilă este un tip de date cu valoare simplă care poate conține numere fracționare.
- Alegerea tipului de virgulă mobilă potrivit pentru aplicația dvs. necesită să luați în considerare mai mult decât valorile maxime și minime pe care le poate conține. De asemenea, trebuie să luați în considerare câte valori pot fi păstrate după zecimală, cum sunt stocate numerele și modul în care stocarea lor internă afectează rezultatul operațiunilor matematice.
- Valorile în virgulă mobilă pot fi uneori reprezentate folosind "notația E" atunci când numerele devin deosebit de mari.
- Există o diferență fundamentală în modul în care compilatorul și runtime-ul se descurcă
decimalspre deosebire defloatsaudouble, mai ales atunci când se determină câtă precizie este necesară din operațiunile matematice.
Verificați-vă cunoștințele
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?