Выражение 1.0 / 0.0 скомпилируется успешно без ошибок компиляции. Это ключевое отличие от целочисленного деления, которое бросило бы ArithmeticException.
Выражение возвращает Double.INFINITY вместо того, чтобы бросить исключение. Это ожидаемое поведение для операций с плавающей точкой в Java.
Операции с плавающей точкой в Java следуют стандарту IEEE 754 при обработке деления на ноль. В отличие от целочисленного деления, деление с плавающей точкой на ноль не бросает исключение. Вместо этого возвращается специальное константное значение.
Когда работаешь с арифметикой типа Double, помни об этих специальных значениях:
Double.INFINITY — результат деления положительного числа на нольDouble.NEGATIVE_INFINITY — результат деления отрицательного числа на нольNaN (Not a Number) — результат операций вроде 0.0 / 0.0-0.0 — отрицательный ноль, отличается от положительного 0.0Эти специальные значения могут приводить к неожиданному поведению в твоём коде, если не обрабатывать их явно. При вычислениях с плавающей точкой стоит:
Double.INFINITY и NaN через Double.isInfinite() и Double.isNaN()Понимание правил IEEE 754 необходимо для написания надёжного кода с арифметикой плавающей точки и предотвращения трудноуловимых багов в продакшене.
Выражение 1.0 / 0.0 успешно скомпилируется и вернет Double.INFINITY без выброса исключения.
Новый — ещё не проверен сообществом
Вы