Итак, я знаю, что IEEE 754 указывает некоторые специальные значения с плавающей запятой для значений, которые не являются действительными числами. В Java, приведение этих значений к примитиву int
делает не исключение, как я ожидал. Вместо этого мы имеем следующее:
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? Есть ли плохие последствия, о которых я не знаю, могут ли исключения с такими отбрасываниями?