Warum hat das Programm die ersten 40 ohne Dezimalpunkt ausgegeben, aber die zweiten mit Dezimalpunkt als 40.0?
Der erste Wert war in einer Variable mit dem Datentyp long
gespeichert,
ein ganzzahliger Datentyp.
Ganzzahlen haben keinen Dezimalteil.
Der zweite Wert war das Ergebnis einer Berechnung
mit einer Variablen des Datentyps double
,
einem Gleitpunkttyp.
Hier ist noch einmal das Programm:
class Beispiel
{
public static void main(String[] args)
{
long arbeitsstunden = 40;
double stundenlohn = 10.0, steuersatz = 0.10;
System.out.println(
"gearbeitete Stunden: " + arbeitsstunden);
System.out.println(
"Bruttolohn: " + (arbeitsstunden * stundenlohn) );
System.out.println(
"Steuersatz: " +
(arbeitsstunden * stundenlohn * steuersatz) );
}
}
Betrachtet sorgfältig die in blau hervorgehobene Anweisung. Die Klammern um
(arbeitsstunden * stundenlohn)
erzwingen zuerst die Multiplikation. Nachdem das getan ist, wird das Ergebnis in Zeichen konvertiert und an den String "Bruttolohn: ". angehängt.
Wenn wir eine Berechnung als Teil einer System.out.println()
Anweisung haben, ist es eine gute Idee den arithmetischen Teil in Klammern zu setzen,
um zu zeigen, was zuerst getan werden woll.
Das ist manchmal nicht nötig, aber es wird nicht schaden
und macht das Programm lesbarer.
Wäre es zweckmäßig einige dieser Anweisungen in zwei Zeilen zu schreiben?