Oefening: wiskundige bewerkingen uitvoeren
Nu u de basisprincipes van optellen en belangrijker begrijpt, gaan we impliciete typeconversie tussen numerieke gegevenstypen en tekenreeksgegevenstypen bekijken. Laten we eens kijken naar verschillende andere algemene wiskundige bewerkingen voor numerieke gegevens.
Eenvoudige wiskundige bewerkingen uitvoeren
Code schrijven om optellen, aftrekken, vermenigvuldigen en delen met gehele getallen uit te voeren
Selecteer alle code in de .NET-editor en druk op Delete of Backspace om deze te verwijderen.
Voer de volgende code in de .NET-editor in:
int sum = 7 + 5; int difference = 7 - 5; int product = 7 * 5; int quotient = 7 / 5; Console.WriteLine("Sum: " + sum); Console.WriteLine("Difference: " + difference); Console.WriteLine("Product: " + product); Console.WriteLine("Quotient: " + quotient);
Voer de code uit. U moet de volgende uitvoer zien:
Sum: 12 Difference: 2 Product: 35 Quotient: 1
U ziet het volgende:
+
is de operator voor optellen-
is de operator voor aftrekken*
is de operator voor vermenigvuldigen/
is de operator voor delen
Het resulterende quotiënt van het deelvoorbeeld is echter mogelijk niet wat u had verwacht. De waarden na het decimaalteken worden afgekapt omdat quotient
deze zijn gedefinieerd als een int
, en int
kunnen geen waarden na decimaal bevatten.
Code toevoegen om deling uit te voeren met letterlijke decimale gegevens
Als u wilt zien dat deling goed werkt, moet u een gegevenstype gebruiken dat breukcijferen na het decimaalteken ondersteunt, zoals decimal
.
Verwijder de code uit de vorige stappen en voer de volgende code in de .NET-editor in:
decimal decimalQuotient = 7.0m / 5; Console.WriteLine($"Decimal quotient: {decimalQuotient}");
Voer de code uit. U moet de volgende uitvoer zien:
Decimal quotient: 1.4
Dit werkt alleen als het quotiënt (links van de toewijzingsoperator) van het type decimal
is en ten minste één van de getallen die worden verdeeld, moet ook van het type decimal
zijn (beide getallen kunnen ook een decimal
type zijn).
Hier volgen twee aanvullende voorbeelden die even goed werken:
decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;
De volgende regels code werken echter niet (of geven onnauwkeurige resultaten):
int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;
Code toevoegen om resultaten van gehele getallen te casten
Wat gebeurt er als u niet met letterlijke waarden werkt? Wat moet u met andere woorden doen als u twee variabelen van het type int
wilt delen, maar niet wilt dat het resultaat wordt afgekapt? In dat geval moet u een cast-conversie van het gegevenstype van int
naar decimal
uitvoeren. Een cast-conversie is een type gegevensconversie waarbij de compiler wordt geïnstrueerd een waarde tijdelijk te behandelen alsof deze van een ander gegevenstype is.
Als u cast-conversie van int
naar decimal
wilt uitvoeren, voegt u de cast-operator toe vóór de waarde. U gebruikt de naam van het gegevenstype tussen haakjes voor de waarde om deze te casten. In dit geval voegt (decimal)
u deze toe vóór de variabelen first
en second
.
Verwijder de code uit de vorige stappen en voer de volgende code in de .NET-editor in:
int first = 7; int second = 5; decimal quotient = (decimal)first / (decimal)second; Console.WriteLine(quotient);
Voer de code uit. U moet de volgende uitvoer zien:
1.4
Notitie
U hebt drie toepassingen gezien voor de operator haakjes: methode aanroepen, volgorde van bewerkingen en casten.
Code schrijven om de rest na de deling van gehele getallen te bepalen
De modulus-operator %
geeft de rest van int
deling aan. Wat u hier echt van leert, is of één getal deelbaar is door een ander getal. Dit kan handig zijn tijdens langdurige bewerkingen waarbij er honderden of duizenden gegevensrecords worden verwerkt en u de eindgebruiker feedback wilt geven telkens wanneer er 100 gegevensrecords zijn verwerkt.
Verwijder de code uit de vorige stappen en voer de volgende code in de .NET-editor in:
Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}"); Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
Voer de code uit. U moet de volgende uitvoer zien:
Modulus of 200 / 5 : 0 Modulus of 7 / 5 : 2
Wanneer de modulus 0 is, betekent dit dat de noemer deelbaar is door de deler.
Volgorde van bewerkingen
Zoals u in de vorige oefening hebt geleerd, kunt u de ()
symbolen gebruiken als de volgorde van bewerkingsoperators . Dit is echter niet de enige manier om de volgorde van de bewerkingen te bepalen.
In wiskunde is PEMDAS een acroniem waarmee studenten de volgorde van bewerkingen kunnen onthouden. De volgorde is:
- Haakjes (wat zich binnen haakjes bevindt, wordt het eerst opgelost)
- Exponenten
- Vermenigvuldiging en deling (van links naar rechts)
- Optelling en aftrekking (van links naar rechts)
C# volgt de gewone voorrangregels behalve voor exponenten. Hoewel er geen exponent-operator in C# is, kunt u de System.Math.Pow methode gebruiken. Deze en andere methoden worden behandeld in de module: Methoden in de .NET-klassebibliotheek uitvoeren met C#.
Code schrijven om de volgorde van bewerkingen van C# uit te oefenen
Verwijder de code uit de vorige stappen en voer de volgende code in de .NET-editor in:
int value1 = 3 + 4 * 5; int value2 = (3 + 4) * 5; Console.WriteLine(value1); Console.WriteLine(value2);
Hier ziet u het verschil bij het uitvoeren van dezelfde bewerkingen in een andere volgorde.
Voer de code uit. U moet de volgende uitvoer zien:
23 35
Samenvatting
Dit is wat u tot nu toe hebt geleerd over wiskundige bewerkingen in C#:
- Gebruik operators, zoals
+
,-
,*
en/
, om eenvoudige rekenkundige bewerkingen uit te voeren. - Het delen van twee
int
-waarden resulteert in de afkapping van alle waarden na de decimale komma. Als u waarden achter het decimaalteken wilt bewaren, moet u de deler of het dividend (of beide) uitint
een drijvendekommanummer werpen, zoalsdecimal
eerst, dan moet het quotiënt van hetzelfde drijvendekommatype zijn om afkapping te voorkomen. - Voer een cast-conversie uit om een waarde tijdelijk te behandelen alsof het van een ander gegevenstype is.
- Gebruik de operator
%
om de restwaarde na de deling vast te leggen. - Bij de volgorde van de bewerkingen worden de gewone voorrangregels gevolgd.