jdk 1 kommastelle angeben?

...komplette Frage anzeigen

2 Antworten

Mit JDK meinst du bestimmt Java Development Kit und damit meinst du, dass du mit Java programmierst, stimmt es soweit?

int a = 30 / 38;
System.out.println(a);

Diese Zeilen würde dir 0 ausgeben.
int (Integer) ist eine Ganzzahl, das heißt, die Nachkommastellen werden einfach komplett abgeschnitten.

Für Kommazahlen nutzt man float oder double

double b = 30 / 38;
System.out.println(b);

Diese Zeilen würden dir jetzt 0.0 ausgeben, da 30/38 eine ganzzahlige Division ist und deshalb erst 0 ausgerechent wird und das, dann mit .0 als double ausgegeben wird.

double c = 30.0 / 38;
System.out.println(c);

Diese Zeilen würden dir jetzt 0.7894736842105263 ausgeben, da du mit 30.0 implizit sagst: "Rechne mit Komma"; denn das funktioniert im PC ganz anderst als ganzzahlig zu rechnen.
(Alternativ zu 30.0 kann man auch 30d [d für double] schreiben oder es explizit mit (double) 30 casten; es gibt mehrere Möglichkeiten)

Soweit einfach mal dazu, vielleicht wusstest du das, vielleicht nicht.
Du möchtest aber 1 Nachkommastelle haben.

Das heißt, wir nutzen die oben genannten Hilfsmittel.

Zunächst Multiplizieren wir unsere Kommazahl mit 10; dadurch verschiebt sich unsere erste Nachkommastelle nach links (Aus 0,78... wird 7,8...).

Jetzt führen wir eine Typumwandlung zu Integer durch, dadurch wird der gesamte Nachkommateil weggeschnitten und es bleibt 7 übrig.

Und zum Schluss teilen wir es wieder durch 10 (Achte darauf, dass wir nicht nur durch ein int teilen, sondern dass die Typen dementsprechend sind, dass es eine Kommazahl wird)

In Code ausgedrückt:

double a = 30d/38;  // Unsere Kommazahl
a = (int) (a * 10); /* Wir rechnen a*10 und durch 
                      (int) wird es hecastet
                       was die Kommastellen abschneidet
                       Da wir in a abspecihern, ist es 
                       automatisch weiterhin double */
a = a / 10;          // Da a schon double ist, wird mit
                     // Kommazahl gerechnet
System.out.println(a);

Die Zeilen geben uns nun das gewünschte Ergebnis 0.7 aus :)

Ich hoffe, du hast es soweit verstanden.

PS:
Das ganze geht auch in einer Zeile:

a = (int) (a*10) / 10.0;

Was ist denn eine Kommerstelle und was bedeutet eine Kommerstelle machen?

Was möchtest Du wissen?