Итак, я знаю, что IEEE 754 определяет некоторые специальные значения с плавающей запятой для значений, которые не являются действительными числами. В Java преобразование этих значений в примитив int
вызывает исключение not , как я и ожидал. Вместо этого мы имеем следующее:
int n;
n = (int)Double.NaN; // n == 0
n = (int)Double.POSITIVE_INFINITY; // n == Integer.MAX_VALUE
n = (int)Double.NEGATIVE_INFINITY; // n == Integer.MIN_VALUE
В чем причина того, что не выбрасывает исключения в этих случаях? Это стандарт IEEE, или это просто выбор разработчиков Java? Существуют ли плохие последствия, о которых я не знаю, возможны ли исключения с такими преобразованиями?