Сравнение бесконечностей в Java - PullRequest
10 голосов
/ 01 декабря 2008

Что возвращает следующее выражение в Java?

Math.max(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);

Я видел этот вопрос на веб-сайте, и ответ Double.POSITIVE_INFINITY. Я не уверен в этом ответе, как мы можем сравнить 2 бесконечности? Может кто-нибудь уточнить это? Спасибо.

Ответы [ 4 ]

26 голосов
/ 01 декабря 2008

Float.POSITIVE_INFINITY возвращает число с плавающей запятой, а Double.POSITIVE_INFINITY возвращает значение double.

Нет метода с именем Math.max (float, double). только Math.max (float, float) и Math.max (double, double)

Поэтому, когда метод называется Math.max (float, double), он преобразует аргумент float в double, и поэтому Math.max (double, double) вызывается так, что Double.POSITIVE_INFINITY возвращается.

Java не конвертирует из двойного в плавающее, поскольку это может привести к проблеме точности.

2 голосов
/ 01 декабря 2008

Конечно, вы можете сравнивать бесконечности. Если вы не попадаете в трансфинитные системы нумерации, где существуют различные степени бесконечности, бесконечность означает только то, что она говорит, число без ограничений.

Максимум / сумма / произведение / среднее из двух чисел без ограничения - одно число без ограничения.

1 голос
/ 01 декабря 2008

Я думаю, вы обнаружите, что все операции, использующие специальные значения, определенные для типов double и float, определены в спецификации IEEE с плавающей точкой . Большинство языков программирования и почти все процессоры следуют этому стандарту.

0 голосов
/ 01 декабря 2008

Вопрос о том, можно ли математически сравнивать бесконечности, лучше оставить здесь более математически грамотным. Но я думаю, что в случае Float.POSITIVE_INFINITY против Double.POSITIVE_INFINITY это просто тот случай, когда Double больше, чем Float, а константы POSITIVE_INFINITY являются просто максимально возможным значением для каждого типа данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...