Ausgabe?! < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:07 So 01.12.2013 | Autor: | i-she |
Aufgabe | public class Vid1DatentypenFuerZahlen {
public static void main (String []args){
short m= 0;
long n = 1;
double x = 9;
double y= 5;
double z = x/y;
System.out.println(z + m + n);
}
} |
Hallo,
die "Aufgabenstellung" ist das, was ich in Eclipse eingegeben habe.
Ich würde gerne wissen, was der Rechner tut, sodass er 2.8 ausgibt.
In wiefern spielen da die Datentypen eine Rolle? Wie beeinflussen sie sich?
Wie fasst der Rechner diese Programme auf?
Meine eigentliche Absicht war als Ausgabe : 1,8 0 9 zu bekommen.
Gruß
i-she
ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:23 So 01.12.2013 | Autor: | DieAcht |
> public class Vid1DatentypenFuerZahlen {
>
> public static void main (String []args){
>
> short m= 0;
> long n = 1;
>
> double x = 9;
> double y= 5;
> double z = x/y;
>
> System.out.println(z + m + n);
> }
>
> }
> Hallo,
>
> die "Aufgabenstellung" ist das, was ich in Eclipse
> eingegeben habe.
> Ich würde gerne wissen, was der Rechner tut, sodass er 2.8
> ausgibt.
> In wiefern spielen da die Datentypen eine Rolle? Wie
> beeinflussen sie sich?
> Wie fasst der Rechner diese Programme auf?
public static void main(String[] args) {
short m = 0;
long n = 1;
double x = 9;
double y = 5;
double z = x / y; // z=9/5 und in dem Fall double/double also kein Problem -> z=1.8
System.out.println(z + m + n);
// Gucken wir uns das doch mal an:
// z+m: z ist double und m ist short -> double Wert mit: z+m=1.8
// z+m ist double und nun z+m+n mit n long, also auch double mit: z+m+n=2.8
}
>
> Meine eigentliche Absicht war als Ausgabe : 1,8 0 9 zu
> bekommen.
Wieso ? Begründe das mal!
>
> Gruß
>
> i-she
>
> ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
DieAcht
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:11 Mo 02.12.2013 | Autor: | i-she |
Vielen Dank, die Erklärung habe ich verstanden.
Also immer wenn ich mit double und z.B. short rechne ist das Ergebnis double?
Nach welchem Prinzip geht die Festlegung des Datentyps des Ergebnisses?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:49 Mo 02.12.2013 | Autor: | DieAcht |
> Vielen Dank, die Erklärung habe ich verstanden.
>
> Also immer wenn ich mit double und z.B. short rechne ist
> das Ergebnis double?
Kommt immer darauf an. Das kann man so allgemein nicht sagen!
Typischer Fall:
byte a = 100;
byte b = a + 30;
// b ist jetzt nicht 130, sondern -126.
// Erklärung:
// Wertebereich von byte ist [mm] 2^{8-1} [/mm] bis [mm] 2^{8-1}-1, [/mm] also von -128 bis 127.
// Hier entsteht ein Überlauf, also er rechnet weiter:
// 100 + 30 =
// (100 + 1) + 1 + [mm] \ldots [/mm] + 1 (genau 30 mal)
// Er kommt bei 100+27 an und hat 127
// Nun will er weiter gehen btw. er muss noch 3 mal!
// 127+1=-128
// -128+1=-127
// -127+1=-126
Wenn du aber hättest:
byte a = 100;
short b = a+ 1000;
// Hier hast du kein Problem, denn short deckt das ohne Probleme ab
Guck dir mal alle primitiven Datentypen im Netz an!
> Nach welchem Prinzip geht die Festlegung des Datentyps des
> Ergebnisses?
>
>
DieAcht
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:55 Mo 02.12.2013 | Autor: | i-she |
Okay, vielen Dank :)
|
|
|
|