Felix: Datentyp-Konvertierung

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

  1. 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

    --
    ie:% fl:( br:< va:) ls:[ fo:) rl:) n4:& ss:| de:] js:| ch:} sh:) mo:} zu:)
  2. 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

  3. 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..