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.
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:
| Datatype | Suffix | Voorbeeld |
|---|---|---|
int | geen suffix | 15 |
long | L of l | 6666L |
double | D of d | 733d |
decimal | M of m | 555m |
float | F of f | 78F |
(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
2alsdoublehad kunnen laten interpreteren in plaats van de5. Eén kommagetal in de deling volstaat om C# met kommagetallen te laten rekenen.