Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

In de vorige activiteit zag je dat de deling van twee gehele getallen het deel na de komma laat vallen. Het datatype van de getallen bepaalt dus mee wat het resultaat wordt. Bekijk deze code:

double eenGetal = 100;
double resultaat;
resultaat = 5 / 2 * eenGetal;
Console.WriteLine(resultaat);

Je zou misschien 250 verwachten, maar dit toont 200. De bewerkingen gebeuren namelijk van links naar rechts, dus eerst 5 / 2. Daar staan twee gehele getallen, dus voert C# een gehele deling uit: 5 / 2 wordt 2 (de ,5 valt weg). Daarna 2 * 100, en dat geeft 200.

We willen C# dus laten weten dat hij hier met kommagetallen moet rekenen. Dat kan op twee manieren.

Manier 1 — een suffix bij een literal

Een literal is een getal dat je letterlijk in je programma schrijft (zoals 5 of 100). Door er een letter achter te plakken, een suffix, vertel je C# als welk datatype hij die literal moet behandelen. Schrijf je 5d, dan ziet C# de 5 als een double:

double eenGetal = 100;
double resultaat;
resultaat = 5d / 2 * eenGetal;   // 5d is een double
Console.WriteLine(resultaat);    // 250

Nu is 5d / 2 een deling waarin een kommagetal voorkomt, dus rekent C# verder met kommagetallen: 5d / 2 is 2.5, en 2.5 * 100 geeft 250.

Dit zijn de suffixen voor de verschillende datatypes:

DatatypeSuffixVoorbeeld
intgeen suffix15
longL of l6666L
doubleD of d733d
decimalM of m555m
floatF of f78F

Manier 2 — een cast (double)

Hetzelfde bereik je door het gewenste datatype tussen haakjes voor de literal te zetten. Die manier van werken noemt men casting of type casting:

double eenGetal = 100;
double resultaat;
resultaat = (double)5 / 2 * eenGetal;   // 5 wordt als double behandeld
Console.WriteLine(resultaat);           // 250

Een cast is vooral handig wanneer je met variabelen werkt: bij een variabele kan je geen suffix plakken, maar je kan ze wel casten met (double).

Merk op dat je in dit voorbeeld evengoed het getal 2 als double had kunnen laten interpreteren in plaats van de 5. Eén kommagetal in de deling volstaat om C# met kommagetallen te laten rekenen.