ArithmeticException добавленный Java

В Java, (Число/0) бросает ArithmeticException в то время как (Число/0.0) = Бесконечность. Почему это происходит?

6
задан mskfisher 9 May 2012 в 19:19
поделиться

3 ответа

, Поскольку номера плавающих точек IEEE-754 имеют представление для бесконечности, тогда как целые числа не следует.

Другими словами, каждый битовый узор в int представляет собой нормальное целое число; Значения с плавающей запятой довольно сложнее с помощью +/- Infinity, «не числом» (NAN) значения, нормализованные значения, субнормальные значения и т. Д.

13
ответ дан 8 December 2019 в 14:43
поделиться

Также вы можете проверить JLS, в котором говорится:

15.17.2 Оператор дивизии
С другой стороны, если ценность делителя в целочисленном разделении равно 0, то арифметицесцепция брошена.

Результат подразделения с плавающей точкой определяется спецификацией Арифметика IEEE: Если результат не является NAN, знак результата положительный, если операнды имеют Тот же знак, отрицательный, если операнды имеют разные знаки.
Отдел ненулевой конечной стоимости ноль результатов в подписанной бесконечности. Знак определяется правилом, указанным выше.

0
ответ дан 8 December 2019 в 14:43
поделиться

Отсюда

Стандарт с плавающей запятой IEEE, поддерживаемый практически всеми современными процессорами, указывает, что каждая арифметическая операция с плавающей точкой, включая деление на ноль, имеет четко определенный результат. Стандартные опоры подписали ноль, а также бесконечность и NAN (не число). Есть два нуля, +0 (положительные ноль) и -0 (отрицательный ноль), и это удаляет любую двусмысленность при делениях. В IEEE 754 арифметика A ÷ +0 - это положительная бесконечность, когда A положительная, отрицательная бесконечность, когда A отрицательна, и NAN, когда A = ± 0. Знаки бесконечности меняются при разделении на -0.

Целочисленное деление на нуле обычно обрабатывается по-разному из плавающей точки, поскольку для результата нет целочисленного представления. Некоторые процессоры генерируют исключение, когда предпринимается попытка разделить целое число на ноль, хотя другие будут просто продолжаться и генерировать неверный результат для разделения. Результат зависит от того, как разделение реализована и может быть равно нулю, либо иногда самым крупным возможным целым числом.

3
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: