Delen via


Integer- en drijvende-kommanummers gebruiken in C#

In deze handleiding leer je over de numerieke typen in C#. U schrijft kleine hoeveelheden code, vervolgens compileert en voert u die code uit. De zelfstudie bevat een reeks lessen waarmee getallen en wiskundige bewerkingen in C# worden verkend. In deze lessen leert u de basisprincipes van de C#-taal.

Fooi

Wanneer een codefragmentblok de knop Uitvoeren bevat, wordt het interactieve venster geopend of wordt de bestaande code in het interactieve venster vervangen. Wanneer het codefragment geen knop Uitvoeren bevat, kunt u de code kopiëren en toevoegen aan het huidige interactieve venster.

Berekening van gehele getallen verkennen

Voer de volgende code uit in het interactieve venster.

int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);

De voorgaande code demonstreert fundamentele wiskundige bewerkingen met gehele getallen. Het int type vertegenwoordigt een geheel getal, een positief of negatief geheel getal. U gebruikt het + symbool voor optellen. Andere algemene wiskundige bewerkingen voor gehele getallen zijn:

  • - voor aftrekken
  • * voor vermenigvuldigen
  • / voor divisie

Begin met het verkennen van deze verschillende bewerkingen. Wijzig de derde regel om elk van deze bewerkingen uit te proberen. Als u bijvoorbeeld wilt aftrekken, vervangt u de + door een -, zoals wordt weergegeven in de volgende regel:

int c = a - b;

Probeer het maar eens. Klik op de knop 'Uitvoeren'. Probeer vervolgens vermenigvuldigen, * en, delen, /. U kunt ook experimenteren door meerdere wiskundige bewerkingen in dezelfde regel te schrijven, als u dat wilt.

Tip

Terwijl u C# (of een programmeertaal) verkent, maakt u fouten wanneer u code schrijft. De compiler vindt deze fouten en rapporteert deze aan u. Wanneer de uitvoer foutberichten bevat, bekijkt u de voorbeeldcode en de code in het interactieve venster om te zien wat u moet oplossen. Deze oefening helpt u de structuur van C#-code te leren.

De volgorde van bewerkingen verkennen

De C#-taal definieert de prioriteit van verschillende wiskundige bewerkingen met regels die consistent zijn met de regels die u in wiskunde hebt geleerd. Vermenigvuldigen en delen hebben voorrang op optellen en aftrekken. Verken dat door de volgende code uit te voeren in het interactieve venster:

int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);

De uitvoer laat zien dat de vermenigvuldiging vóór de toevoeging wordt uitgevoerd.

U kunt een andere volgorde van bewerkingen afdwingen door haakjes toe te voegen rond de bewerking of bewerkingen die u eerst wilt uitvoeren. Voeg de volgende regels toe aan het interactieve venster:

d = (a + b) * c;
Console.WriteLine(d);

Verken meer door veel verschillende bewerkingen te combineren. Vervang de vierde regel in de voorgaande code door zoiets als volgt:

d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);

Mogelijk ziet u een interessant gedrag voor gehele getallen. Deling van gehele getallen produceert altijd een geheel getal, zelfs wanneer u verwacht dat het resultaat een decimaal of breukdeel bevat.

Probeer de volgende code:

int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);

De precisie en limieten van gehele getallen verkennen

In dat laatste voorbeeld hebt u gezien dat de geheel getal deling het resultaat afkort. U kunt de rest ophalen met behulp van de rest operator, het % teken:

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}");

Het type C#-geheel getal verschilt van wiskundige gehele getallen op een andere manier: het int type heeft minimum- en maximumlimieten. Probeer de volgende code om deze limieten te zien:

int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");

Als een berekening een waarde produceert die deze limieten overschrijdt, hebt u een onderloop- of overloopvoorwaarde. Het antwoord lijkt van de ene limiet naar de andere te overspringen. Als u een voorbeeld wilt zien, voegt u deze twee regels toe in het interactieve venster:

int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");

U ziet dat het antwoord zeer dicht bij het minimale (negatieve) gehele getal ligt. Het is hetzelfde als min + 2. De optelling veroorzaakte een overschrijding van de toegestane waarden voor gehele getallen. Het antwoord is een groot negatief getal omdat een overloop 'rondloopt' van de grootst mogelijke gehele waarde naar de kleinste waarde.

Er zijn andere numerieke typen met verschillende limieten en precisie die u zou gebruiken wanneer het int type niet aan uw behoeften voldoet. Laten we deze typen getallen eens bekijken.

Werken met het dubbel datatype

Het double numerieke type vertegenwoordigt een drijvendekommagetal met dubbele precisie. Deze termen zijn mogelijk nieuw voor u. Een drijvende komma getal is handig om niet-geïntegreerde getallen weer te geven die groot of klein kunnen zijn. dubbele precisie is een relatieve term die het aantal binaire cijfers beschrijft dat wordt gebruikt om de waarde op te slaan. Dubbele-precisie getallen hebben twee keer zoveel binaire cijfers als enkelvoudige-precisie. Op moderne computers is het gebruikelijker om dubbele precisie te gebruiken dan enkele precisienummers. enkele-precisie getallen worden gedeclareerd met behulp van het trefwoord float. Laten we eens kijken. Voer de volgende code uit en bekijk het resultaat:

double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);

U ziet dat het antwoord het decimaal gedeelte van het quotiënt bevat. Probeer een iets gecompliceerdere expressie met dubbele precisie. U kunt de volgende waarden gebruiken of andere getallen vervangen:

double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);

Het bereik van een dubbele waarde is groter dan gehele getallen. Probeer de volgende code in het interactieve venster:

double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");

Deze waarden worden afgedrukt in wetenschappelijke notatie. Het getal vóór de E is de ondertekening. Het getal na de E is de exponent, als macht van 10.

Net als decimale getallen in wiskunde kunnen dubbele getallen in C# afrondingsfouten hebben. Probeer deze code:

double third = 1.0 / 3.0;
Console.WriteLine(third);

U weet dat 0.33/10 is en niet precies hetzelfde is als 1/3. Op dezelfde manier is 0.3333/100. Die waarde is dichter bij 1/3, maar nog steeds niet exact. Ongeacht het aantal decimalen dat u toevoegt, blijft er een afrondingsfout over.

Uitdaging

Probeer andere berekeningen met grote getallen, kleine getallen, vermenigvuldigen en delen met behulp van het double type. Probeer complexere berekeningen uit te voeren.

Werken met decimale typen

Er is nog een ander type om te leren: het decimal type. Het decimal type heeft een kleiner bereik, maar een grotere precisie dan double. Laten we eens kijken:

decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");

U ziet dat het bereik kleiner is dan het double type. U kunt de grotere precisie met het decimale type zien door de volgende code uit te voeren:

double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);

decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);

U ziet dat de wiskundige berekening met het decimale type meer cijfers rechts van het decimaalteken heeft.

Het achtervoegsel M op de getallen is hoe u aangeeft dat een constante het decimal type moet gebruiken. Anders wordt door de compiler uitgegaan van het double type.

Notitie

De letter M is gekozen als de meest visueel afzonderlijke letter tussen de double en decimal trefwoorden.

Uitdaging

Schrijf code waarmee het gebied van een cirkel wordt berekend waarvan de straal 2,50 centimeter is. Houd er rekening mee dat de oppervlakte van een cirkel de straal in het kwadraat is vermenigvuldigd met PI. Een hint: .NET bevat een constante voor PI, Math.PI die u voor die waarde kunt gebruiken. Math.PI, zoals alle constanten die zijn gedeclareerd in de System.Math naamruimte, een double waarde is. Daarom moet u double gebruiken in plaats van decimal waarden voor deze uitdaging.

U moet een antwoord krijgen tussen 19 en 20.

Nadat u het hebt geprobeerd, opent u het detailvenster om te zien hoe u dit hebt gedaan:

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/NumbersInCsharp/Program.cs" id="Challenge":::

Probeer desgewenst andere formules.

U hebt de interactieve zelfstudie 'Numbers in C#' voltooid. U kunt de koppeling Vertakkingen en lussen selecteren om de volgende interactieve zelfstudie te starten. U kunt ook de .NET-site bezoeken om de .NET SDK te downloaden, een project op uw computer te maken en coderen te behouden. In de sectie "Volgende stappen" wordt u teruggeleid naar deze tutorials.

In de volgende artikelen vindt u meer informatie over getallen in C#: