Wie Typecaste ich nur das Ergebniss einer Rechnung ?

Soltan

Aktives Mitglied
Hey !
Ich habe verschiedene Zahlen (x,y,z) mit Kommastellen. Will alle addieren und NUR (!) das Ergebnis ganzzahlig machen. Das ganzzahlige Ergebnis soll innerhalb eines System.out.println(); ausgegeben werden.

Nun wenn ich System.out.println((int)(x+y+z)); mache werden vor der Rechnung schon alle Zahlen innerhalb der Klammer ganzzahlig gemacht. Wie rechne ich allerdings die Summe inklusive Komma aus.... und caste nur das Ergebniss + gebe es dann aus?
 
Zuletzt bearbeitet:
Achso! Also bei ((int)(x+y+z)) wird zuerst die zweite klammer inklusive kommastelle berechnet... und DANN bei dem Ergebnis erst die Kommastelle abgeschnitte.
Dann stellt sich für mich die andere Frage:
Wie kann ich verschiedene Zahlen casten VOR dem umrechnen ? ich habe sagen wir 20 Zahlen mit Komma. Ich will alle ganzzahlig machen und dann ausrechnen.
Muss ich das(im falle einer multiplikation) so machen:
System.out.println((int)x*(int)y*(int)z*(int)b) ?
Dabei bekomme ich ganz verrückte Ergebnisse....
 
Zuletzt bearbeitet:
Die verrückten Ergebnisse kamen zu Stande weil die Zahlen zu groß für meinen Cast waren.
Noch eine Frage:

Ist es möglich den Wert eines Datentypes ( zB double long etc ) in einen kleineren zu casten ( zB byte) ohne einen neuen (zB) Byte Datentyp anzulegen ?
Sagen wir ich habe:

double a = 2.2;

Jetzt will ich a auf byte casten.
Ok ich kann einen neuen Datentype anlegen:
byte b = (byte) a;

Allerdings behält dann a dennoch 2.2.
Kann ich auch nur a einfach casten so dass a einfach dann den Wert eines bytes hat?

Vom Gedankengang her so ala: a = (byte) a;
 
Vom Gedankengang her so ala: a = (byte) a;
Java:
public class Test
{
    public static void main(String[] args)
    {
        double wertA = 438.34;
        double wertB = 232.434;
      
        double ergebnisA = wertA / wertB;
        double ergebnisB = (byte)(wertA / wertB);
      
        System.out.println("A: " + ergebnisA + " B: " + ergebnisB);
        /** Du musst es bestimmen und gestalten */
    }
}
//A: 1.8858686766996222,  B: 1.0
 
Allerdings behält dann a dennoch 2.2.
Kann ich auch nur a einfach casten so dass a einfach dann den Wert eines bytes hat?

Vom Gedankengang her so ala: a = (byte) a;
Ja, das kannst du machen. a behält dabei allerdings seinen ursprünglichen Datentypen. In dem Fall finden zwei Typecasts statt. Durch deinen expliziten Typecast wird der Ausdruck auf der rechten Seite der Zuweisung zunächst zu einem byte ausgewertet. Das byte wird dann der Variablen a zugewiesen, die vom Typ double ist. Deshalb wird ein impliziter Typecast nach double vorgenommen.
 

Neue Themen


Zurück
Oben