В Java, (Число/0) бросает ArithmeticException в то время как (Число/0.0) = Бесконечность. Почему это происходит?
, Поскольку номера плавающих точек IEEE-754 имеют представление для бесконечности, тогда как целые числа не следует.
Другими словами, каждый битовый узор в int
представляет собой нормальное целое число; Значения с плавающей запятой довольно сложнее с помощью +/- Infinity, «не числом» (NAN) значения, нормализованные значения, субнормальные значения и т. Д.
Также вы можете проверить JLS, в котором говорится:
15.17.2 Оператор дивизии
С другой стороны, если ценность делителя в целочисленном разделении равно 0, то
арифметицесцепция брошена.
Результат подразделения с плавающей точкой определяется спецификацией
Арифметика IEEE:
Если результат не является NAN, знак результата положительный, если операнды имеют
Тот же знак, отрицательный, если операнды имеют разные знаки.
Отдел ненулевой конечной стоимости ноль результатов в подписанной бесконечности.
Знак определяется правилом, указанным выше.
Стандарт с плавающей запятой IEEE, поддерживаемый практически всеми современными процессорами, указывает, что каждая арифметическая операция с плавающей точкой, включая деление на ноль, имеет четко определенный результат. Стандартные опоры подписали ноль, а также бесконечность и NAN (не число). Есть два нуля, +0 (положительные ноль) и -0 (отрицательный ноль), и это удаляет любую двусмысленность при делениях. В IEEE 754 арифметика A ÷ +0 - это положительная бесконечность, когда A положительная, отрицательная бесконечность, когда A отрицательна, и NAN, когда A = ± 0. Знаки бесконечности меняются при разделении на -0.
Целочисленное деление на нуле обычно обрабатывается по-разному из плавающей точки, поскольку для результата нет целочисленного представления. Некоторые процессоры генерируют исключение, когда предпринимается попытка разделить целое число на ноль, хотя другие будут просто продолжаться и генерировать неверный результат для разделения. Результат зависит от того, как разделение реализована и может быть равно нулю, либо иногда самым крупным возможным целым числом.