div by zero = Infinity
by Phil on Mai.15, 2008, under Coden, Java
Der Titel sagt doch schon alles, also wenn sich mal jemand wundert, wo der Integer Wert 2147483647 her kommt … man kann durchaus durch Null teilen – fast. Durch Grenzwertberechnung kann man das Ergebnis bestimmen, wer zu faul ist kann auch mal probieren durch immer kleinere Werte zu teilen und wir merken, das Ergebnis wird immer größer.
Teilt man in Java durch Null – nicht null – so bekommt man eine java.lang.ArithmeticException. Allerdings kann man durch 0.0f wunderbar teilen und bekommt dann Infinity geliefert:
System.out.println("div by zero = " + (1 / 0.0f));
Jetzt nochmal zurück zu 2147483647: Das ist der größte Integer Wert, der möglich ist – auch Integer.MAX_VALUE. Tja, und wenn man nun float zu int castet – evtl. auch implizit, wie bei mir der Fall – kann man sich lange den Kopf darüber zerbrechen, woher plötzlich diese riesen Zahl kommt … ergo, Java nimmt als Ersatzwert für unendlich, einfach den größtmöglichen Integer Wert.