Nyckelord: Datatyper, Variabler, Matematiska beräkningar

Datatyper vid matematiska beräkningar
Vad blir utskriften och vilken datatyp har resultatet från följande beräkningar?
int A = 10;
int B = 4;
double C = A/B;
System.out.println(C);
Vad skulle hänt om man istället hade skrivit:
System.out.println(A/B);
Vad händer om vi istället byter datatyp på variablerna till doubles?
double X = 10.0;
double Y = 4.0;
double Z = X/Y;
System.out.println(Z);
System.out.println(X/Y);
Ledtråd
Tänk på att det spelar roll vilken datatyp som man använder i beräkningen. En beräkning med enbart integers resulterar alltid i ett resultat med enbart integers. Läs mer under matematiska beräkningar i Java.
Svar
Förklaring
I fallet när vi bara har integers
int A = 10;
int B = 4;
double C = A/B;
System.out.println(C);
System.out.println(A/B);
får vi utskriften:
2.0
2
I första fallet beräknas först 10/4 vilket normalt blir 2.5. Men eftersom 2.5 inte är ett heltal, kapas decimaltalet av, det vill säga till 2. Men eftersom vi säger att vi vill spara värdet som en double, konverteras 2 till 2.0.
I andra fallet anger vi inte någon datatyp. Eftersom vi då inte har någon typkonvertering så får vi slutresultatet 2.
Om vi istället vill ha "det det faktiskt borde bli", det vill säga 2.5 kan vi istället använda doubles som i fall två.
double X = 10.0;
double Y = 4.0;
double Z = X/Y;
System.out.println(Z);
System.out.println(X/Y);
I detta fall har vi dividering av två doubles. 10.0/4.0 blir 2.5 och kommer därför sparas i variabeln Z. Även utskriften från X/Y kommer att resultera i 2.5 eftersom beräkning med doubles alltid resulterar ett resultat av doubles.
2.5
2.5