Datentyp-Konvertierung
Felix
- java
0 Johannes Zeller0 Slyh0 Felix
Grüße!
Ich hab folgendes Problem:
Ich fummle zur Zeit in meinen Java-Programm mit Zeitstempeln rum. Nehme aktuelle Zeit, führe Aktion aus, nehme wieder die Zeit, berechne Differenz zwischen 1. und 2. Zeit und ermittle somit die Dauer der Aktion. Die Zeiten sind ja auf Grund ihrer Größe vom Typ long. Nun bleibt aber als Differenz lediglich Werte übrig, die aus nur Integer sind. Wie kann ich die Differenzen von long zu int konvertieren? Ich brauche später noch die Durchschnitte, welche wahrscheinlich vom Typ double sind. Also brauche ich ja vorher Integer, oder nicht?
Ich hoffe, jemand kann mir helfen.
Bis später, Felix
Hallo Felix,
Wie kann ich die Differenzen von long zu int konvertieren?
Das Stichwort hier heißt »casting«. In deinem Fall sähe das so aus:
int i = (int)l;
l wäre hier die Variable vom Typ long.
Schöne Grüße,
Johannes
Hallo,
Ich brauche später noch die Durchschnitte, welche wahrscheinlich vom Typ double sind. Also brauche ich ja vorher Integer, oder nicht?
Das einzige, was am letzten Satz richtig ist, ist das "nicht". ;-)
Du kannst mit jedem numerischen Datentyp in Java arithmetische
Operationen durchführen. Du mußt dir nur klar darüber werden, welche
Datentypen welchen Datentyp zum Ergebnis haben.
Dividierst du z.B. eine Variable eines ganzzahligen Datentyps mit
mit einer Variable eines auch ganzzahligen Datentyps, also bspw. int
und int, dann kommt wieder ganzzahliger Datentyp raus (int).
Die Nachkommastelle wird einfach weggeworfen (aka abgerundet).
Sobald einer der beiden Werte ein Fließkommatyp (float oder double)
ist, wird das Ergebnis vom Typ float oder double sein.
Möchtest du also zwei Ganzzahl-Typen miteinander dividieren, aber
trotzdem später eine Fließkommazahl vom Typ double rausbekommen, mußt
du einen der beiden Werte vorher auf double casten. Z.B. so:
ergebnisDouble = ganzzahl1 / (double)ganzzahl2;
Gleiches gilt für float.
Ist einer der beiden Werte eine Konstante, dann kannst du auch so
notieren:
ergebnisDouble = ganzzahl1 / 123d; // d = double
bzw.
ergebnisFloat = ganzzahl1 / 123f; // f = float
Oder einfach:
ergebnisDouble = ganzzahl1 / 123.0; // double
In dem Fall ist 123.0 in Java automatisch vom Typ double.
Gruß
Slyh
So hatte ich das auch schon mal ausprobiert mit dem casten, aber da hat er mir irgendwelche merkwürdigen Fehler angezeigt, drum hab ich gefragt. Jetzt funktioniert's, alles prima!
Danke Jungs..