Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > java.lang.ArithmeticException на целых типах,


Автор: Royan 25.4.2007, 22:16
Код

System.out.println(17 / 0.0);
System.out.println(17 / 0); 


Вот объясните мне, пожалуйста, почему в первом случае выводится "Infinity" а во втором валится ArithmeticException? Где математическая справдливость?

Автор: dajver 25.4.2007, 22:36
Мне кажется, что
во втором случае у тебя целые числа, ноль - он и есть ноль. А делить на ноль нельзя.
А в первом - плавающая точка, что-то, типа, 17/x, причем x->0.

Хотя, возможно я и не прав, а так домысливаю.



Автор: Boing747 26.4.2007, 10:01
Цитата

 Вот объясните мне, пожалуйста, почему в первом случае выводится "Infinity" а во втором валится ArithmeticException? Где математическая  справдливость?


Просто 0.0 у тебя может получиться из-за округления, погрешности вычисления. Как правило, так и получается (иначе просто используют целые числа и простой 0. Как говориться- мухи отдельно- котлеты отдельно), тогда логичнее писать бесконечность, а простой ноль, как сказал dajver, 
Цитата
ноль - он и есть ноль
. Так что на мой взгляд все логично

Автор: Royan 26.4.2007, 10:59
Все это логично, но только, где это написано?

Автор: powerOn 26.4.2007, 13:12
Цитата(Royan @  26.4.2007,  11:59 Найти цитируемый пост)
Все это логично, но только, где это написано? 

в книге. например в http://www.ozon.ru/context/detail/id/2617741/

Автор: Royan 27.4.2007, 11:07
Понятно вопрос закрыт, но я убежден что здесь есть явное разногласие с последовательностью. Либо все арифметические операции над базовыми типами придерживаются области знаний уровня начальной школы, либо уж используются термины высшей математики.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)