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 geeft één waarde terug

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.

De klasse Math

De 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.

FunctieBetekenisVoorbeeld
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 = 8
Math.Abs(-8.5) → double resultaat=8.5
double resultaat =Math.Sqrt( )Vierkantswortel (Square Root)Math.Sqrt(25) → resultaat = 5
double resultaat =Math.Pow( )MachtsverheffingMath.Pow(3, 2) → resultaat= 9
double resultaat =Math.Round( )Afronden van het resultaatMath.Round(3.14159, 2) → resultaat=3.14
int/double resultaat =Math.Min( ), Math.Max( )Kleinste en grootste van 2 getallen bepalenMath.Min(4, 9) → int resultaat=4
Math.Max(4, 9) → int resultaat=9
Math.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) → 1
Math.Cos(0) → 1
Math.Tan(0) → 0
Math.Atan(1) → ongeveer 0.785
double resultaat =Math.Log( ), // of Math.Exp( )Logaritmische functiesMath.Log(Math.E) → 1
Math.Exp(1) → ongeveer 2.718
int resultaat =Math.Sign( )Bepaalt welk teken het getal heeftMath.Sign(-12) → -1
ConstanteBetekenisVoorbeeld
double resultaat = Math.PIresultaat = 3.14159265358979, de waarde van het getal π2 * Math.PI * 5 → ongeveer 31.416 (omtrek van een cirkel met straal 5)

Haakjes en parameters

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 parametersResultaat
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) geeft 1.

Afronden met Math.Round

De 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:

AfrondingResultaat
Math.Round(123.45, 1, MidpointRounding.ToEven)123.4
Math.Round(123.45, 1, MidpointRounding.AwayFromZero)123.5

Wil je een getal afronden op n cijfers (de afronding zelf is het doel), gebruik dan Math.Round met MidpointRounding.AwayFromZero, zodat een 5 naar boven afrondt zoals je het gewoon bent, bijvoorbeeld Math.Round(prijs, 2, MidpointRounding.AwayFromZero). Wil je een getal enkel netjes tonen met een vast aantal cijfers na de komma (bijvoorbeeld 12.50), dan gebruik je formattering met Fn, bijvoorbeeld prijs.ToString("F2"). zie volgende item voor uitgewerkt voorbeeld