Jak wygląda dziedziczenie w Javie?
Jak wygląda dziedziczenie w Javie?
Podczas operacji dzielenia w Javie trzeba pamiętać o kilku regułach. Wyniki operacji mogą się różnić zależnie od tego, czy operandy są typów całkowitych, czy zmiennoprzecinkowych.
1. Jeśli dzielna i dzielnik są typami całkowitymi, to iloraz też będzie całkowity.
Jeśli dzielna lub dzielnik są typami zmiennoprzecinkowymi, to iloraz będzie zmiennoprzecinkowy.
Stąd:
System.out.println(5/2); // = 2
System.out.println(5/2.0); // = 2.5
2. Dzielenie przez zero w przypadku operandów całkowitych powoduje wyrzucenie wyjątku niekontrolowanego java.lang.ArithmeticException.
Dzielenie zmiennoprzecinkowe przez zero zakończy się pomyślnie:
System.out.println(5/0); // wyjątek ArithmeticException
System.out.println(5/0.0); // Double.POSITIVE_INFINITY
System.out.println(-5/0.0); // Double.NEGATIVE_INFINITY
Gdyby operacja dzielenia była wykonywana na operandach typu float, to w wyniku dzielenia przez zero, zwrócone zostałyby analogiczne stałe z klasy Float.
3. Zmiennoprzecinkowe dzielenie zera przez zero, powoduje zwrócenie wartości, która nie reprezentuje liczby (Not-a-Number):
System.out.println(0/0.0) // Double.NaN
Warto zapamiętać, że porównanie wartości NaN z jakąkolwiek wartością zwraca wartość false. Stąd:
float f1 = Float.NaN;
float f2 = Float.NaN;
System.out.println(f1 == f2); // false
Jest to konsekwencją implementacji standardu IEEE-754. Do porównania wartości NaN można wykorzystać statyczną metodę isNaN (z klasy Float lub Double).