Samstag, 22. Januar 2011

Nice To Know: Division in Java

So, ein für alle Mal. Endlich zum Hinter die Ohren schreiben:

1 / 2 = 0
1.0 / 2 = 0.5
1 / 2.0 = 0.5
1.0 / 2.0 = 0.5
((double) 1) / 2 = 0.5
1 / ((double) 2) = 0.5
((double) 1) / ((double) 2) = 0.5

1 * 2 = 2
1.0 * 2 = 2.0
1 * 2.0 = 2.0
1.0 * 2.0 = 2.0
((double) 1) * 2 = 2.0
1 * ((double) 2) = 2.0
((double) 1) * ((double) 2) = 2.0

1 / 2 * 2 = 0
1 / 2 * 2.0 = 0.0
1 / (2 * 2.0) = 0.25
1 / 2.0 * 2 = 1.0
1 / (2.0 * 2) = 0.25
1.0 / 2 * 2 = 1.0
1.0 / (2 * 2) = 0.25

Kommentare:

  1. Wie kann 1/2 gleich 0 sein, 1.0/2 aber 0.5?!

    AntwortenLöschen
  2. Bei Ganzzahldivision wird abgerundet, damit der Wert in die Ganzzahl passt. Aber sobald eine Fließkommazahl an dem ganzen Spaß beteiligt ist, wird automatisch alles in Fließkommazahlen umgewandelt und das Ergebnis muss dann nicht mehr auf Ganzzahl gerundet werden. Selbes Spiel auch bei

    5 / 3 = 1
    5 / 3.0 = 1.666..
    5.0 / 3 = 1.666..

    AntwortenLöschen
  3. Die Sache hat auch ihre Tücken, wie man bei

    1 / 2 * 2.0 = 0.0

    sieht... Wird natürlich alles von links nach rechts ausgewertet und da ist 1 / 2 in Java nunmal 0.

    AntwortenLöschen
  4. Es gibt so schöne böhmische Dörfer!

    AntwortenLöschen