Nyckelord: Datatyp, Variabel, Deklarera
Matematiska beräkningar i Java: division
I denna uppgift ska vi testa att utföra division mellan två tal och lära oss mer om vikten av att ha koll på vilka datatyper man använder när man utför en beräkning i Java.
I följande uppgift utgår vi från följande variabler:
double a = 4.0;
double b = 6.0;
int c = 4;
int d = 6;
Utgå sedan från programmet:
public class DatatyperUppgift3 {
public static void main(String[] args) {
double a = 4.0;
double b = 6.0;
int c = 4;
int d = 6;
// Skriv din kod här
}
}
Utför division mellan två tal i Java
- Börja med att utföra och skriva ut beräkningen b dividerat med a. Vad blir utskriften?
- Fortsätt sedan att utföra och skriva ut beräkningen a dividerat med b. Vad blir utskriften?
- Utför sedan beräkningen d dividerat med c och jämför med motsvarande flyttalsdivision ovan. Vad blir utskriften i detta fall? Varför?
- Avslutningsvis, utför beräkningen c dividerat med d och jämför med motsvarande flyttalsdivision ovan. Vad blir utskriften? Varför?
Bonusfråga: Vad händer om man blandar datatyper i beräkningen, exempelvis d dividerat med a?
Ledtråd
En beräkning av två heltal (integers) kommer alltid resultera i en integer. Går beräkningen inte jämt ut, kommer decimaltalen att kapas av. Observera att det alltså inte sker en avrundning, exempelvis typkonverteringen (int) 2.6 = 2 och (int) 1.2 = 1.
En beräkning som innehåller en double, kommer alltid att resultera i en double. Exempelvis, en division mellan en integer och en double kommer resultera i en double.
Lösning
Svar:
public class DatatyperUppgift3 {
public static void main(String[] args) {
double a = 4.0;
double b = 6.0;
int c = 4;
int d = 6;
System.out.println(b/a);
System.out.println(a/b);
System.out.println(d/c);
System.out.println(c/d);
}
}
Utskriften blir:
1.5
0.6666666666666666
1
0
Förklaring:
En matematisk beräkning som enbart innehåller ints (integers) kommer alltid att resultera i en integer (oavsett vad svaret blir). En beräkning som innehåller en double, kommer alltid resultera i en double. Det är därför väldigt viktigt att man har koll på vad beräkningen resulterar i, eftersom det är enkelt att bli lurad. Exempelvis:
double val = 6/4;
System.out.println(val);
I detta fall är det enkelt att tro att resultatet blir 1.5, men detta är faktiskt inte fallet. I ovanstående exempel görs först beräkningen 6/4 av två heltal, det vill säga 6/4 = 1. Värdet 1 typkonverteras sedan till ett decimaltal när den tilldelas variabeln val. Utskriften i detta fall blir alltså 1.0. Lurigt!
Vid numerisk promotion kan heltal automatiskt konverteras till double när en operand är double. Blandade typer är ofta helt avsiktliga; välj dem efter uppgiften. Double garanterar inte exakta decimaltal.
Vanliga frågor om Uppgift 3 - Matematiska beräkningar i Java: division
Vad handlar Uppgift 3 - Matematiska beräkningar i Java: division om?
Övningsuppgift i Java: Matematiska beräkningar i Java: division. Träna själv med fria ledtrådar och facit.
Hur övar jag på Uppgift 3 - Matematiska beräkningar i Java: division?
Kör exemplen själv, ändra ett värde i taget och jämför sedan resultatet med förklaringen på sidan.