Naast de gewone operatoren (+, -, *, /, %) heb je soms nood aan extra
hulpmiddelen. Denk maar aan een vierkantswortel of aan goniometrische
functies zoals sinus en cosinus. Daarvoor bestaan in C# kant-en-klare
functies.
Een functie levert steeds één waarde op. Die waarde moet je opvangen, meestal in een variabele, anders gaat het resultaat verloren.
double num1, num2, max;
// Vraag de gebruiker om twee getallen
//Console.Write("Voer het eerste getal in: ");
num1 = Convert.ToDouble(Console.ReadLine());
//Console.Write("Voer het tweede getal in: ");
num2 = Convert.ToDouble(Console.ReadLine());
// Gebruik Math.Max om het grootste getal te bepalen
max = Math.Max(num1, num2);
// Toon het resultaat
Console.WriteLine("Het grootste getal van " + num1 + " en " + num2 + " is: " + max);
Het resultaat van Math.Max(num1, num2) wordt hier in de variabele max
bewaard. Pas daarna kan je het tonen of er verder mee rekenen.
MathDe functies voor getallen vind je in de klasse Math. Wat een klasse precies
is, leer je later. Bekijk het voorlopig gewoon als de manier om aan deze
functies te geraken: je schrijft Math. gevolgd door de naam van de functie.
In de tabel hieronder vind je een overzicht van een aantal beschikbare functies.
| Functie | Betekenis | Voorbeeld |
|---|---|---|
Het datatype van resultaat hangt af van de functie en de gebruikte waarden; het kan bijvoorbeeld double of int zijn. | ||
int/double resultaat = Math.Abs( ) | Bepaal de absolute waarde (zonder teken) | Math.Abs(-8) → int resultaat = 8Math.Abs(-8.5) → double resultaat=8.5 |
double resultaat =Math.Sqrt( ) | Vierkantswortel (Square Root) | Math.Sqrt(25) → resultaat = 5 |
double resultaat =Math.Pow( ) | Machtsverheffing | Math.Pow(3, 2) → resultaat= 9 |
double resultaat =Math.Round( ) | Afronden van het resultaat | Math.Round(3.14159, 2) → resultaat=3.14 |
int/double resultaat =Math.Min( ), Math.Max( ) | Kleinste en grootste van 2 getallen bepalen | Math.Min(4, 9) → int resultaat=4Math.Max(4, 9) → int resultaat=9Math.Max(4.5, 9.2) → double resultaat=9.2 |
double resultaat =Math.Sin( ), // of Math.Cos( ), Math.Tan( ), Math.Atan( ) | Enkele van de meest gebruikte goniometrische functies (hoek in radialen) | Math.Sin(Math.PI / 2) → 1Math.Cos(0) → 1Math.Tan(0) → 0Math.Atan(1) → ongeveer 0.785 |
double resultaat =Math.Log( ), // of Math.Exp( ) | Logaritmische functies | Math.Log(Math.E) → 1Math.Exp(1) → ongeveer 2.718 |
int resultaat =Math.Sign( ) | Bepaalt welk teken het getal heeft | Math.Sign(-12) → -1 |
| Constante | Betekenis | Voorbeeld |
double resultaat = Math.PI | resultaat = 3.14159265358979, de waarde van het getal π | 2 * Math.PI * 5 → ongeveer 31.416 (omtrek van een cirkel met straal 5) |
Met uitzondering van Math.PI heeft elk van deze functies haakjes. PI is
namelijk een constante, geen functie. Tussen de haakjes plaats je de waarden
of variabelen waarop de bewerking moet gebeuren. Bij sommige functies volstaat
één waarde, andere hebben er meerdere nodig.
| Functie met parameters | Resultaat |
|---|---|
Math.Abs(-123.45) | 123.45 |
Math.Sin(Math.PI / 2) | 1 (merk op dat de hoek in radialen wordt gegeven) |
Math.Sqrt(2) | 1.4142135623731 |
Math.Max(-50, -25) | -25 |
Math.Pow(2, 10) | 1024 (2 tot de macht 10) |
De goniometrische functies werken met de hoek in radialen, niet in graden. Een rechte hoek van 90° is \(\frac{\pi}{2}\) radialen, dus
Math.Sin(Math.PI / 2)geeft1.
Math.RoundDe functie Math.Round( ) heeft wat extra uitleg nodig. Je kan ze met 2 of 3
parameters gebruiken.
Met twee parameters geef je de waarde en het aantal cijfers na de komma:
Math.Round(123.45, 1); // 123.4
In dat geval gebruikt C# standaard de afrondingsmodus
MidpointRounding.ToEven: bij een getal dat precies tussen twee waarden valt,
rondt het af naar het dichtstbijzijnde even cijfer. Dat is de Amerikaanse
manier van afronden.
Wil je afronden zoals we dat in België gewoon zijn (een 5 rondt altijd naar
boven af), dan geef je MidpointRounding.AwayFromZero mee als derde
parameter:
| Afronding | Resultaat |
|---|---|
Math.Round(123.45, 1, MidpointRounding.ToEven) | 123.4 |
Math.Round(123.45, 1, MidpointRounding.AwayFromZero) | 123.5 |
Wil je een getal afronden op
ncijfers (de afronding zelf is het doel), gebruik danMath.RoundmetMidpointRounding.AwayFromZero, zodat een5naar boven afrondt zoals je het gewoon bent, bijvoorbeeldMath.Round(prijs, 2, MidpointRounding.AwayFromZero). Wil je een getal enkel netjes tonen met een vast aantal cijfers na de komma (bijvoorbeeld12.50), dan gebruik je formattering metFn, bijvoorbeeldprijs.ToString("F2"). zie volgende item voor uitgewerkt voorbeeld