You are here: Home » Учебник » Приложение E. Специальные значения с плавающей запятой

Приложение E. Специальные значения с плавающей запятой

Деление целого на ноль недопустимо и выбрасывает ArithmeticException, но деление значения с плавающей запятой на ноль не вызывает исключения. Арифметика с плавающей запятой может переполняться до бесконечности, если результат операции слишком велик для double или float или стремиться к нулю, если результат слишком мал для double или float. Java предоставляет специальные значения с плавающей запятой POSITIVE_INFINITY, NEGATIVE_INFINITY и NaN (Not a Number – не число) для обозначения этих результатов. Эти значения определяются как специальные константы в классе Float и Double.

Если положительное число с плавающей запятой делится на ноль, результат будет POSITIVE_INFINITY. Если отрицательное число с плавающей запятой делится на ноль, результатом является NEGATIVE_INFINITY. Если ноль с плавающей точкой делится на ноль, результатом является NaN, что означает, что результат математически не определен. Строковыми представлениями этих трех значений являются Infinity, -Infinity и NaN. Например,

System.out.print(1.0 / 0); // Печатает Infinity
System.out.print(–1.0 / 0); // Печатает -Infinity
System.out.print(0.0 / 0); // Печатает NaN

Эти специальные значения также могут использоваться в качестве операндов в вычислениях. Например, число, разделенное на POSITIVE_INFINITY, дает положительный ноль. В таблицеприведены различные комбинации операторов /, *, %, +, и

x y x/y x*y x%y x+y x-y
Конечное число ± 0.0 ± infinity ± 0.0 NaN Конечное число Конечное число
Конечное число ± infinity ± 0.0 ± 0.0 x ± infinity infinity
± 0.0 ± 0.0 NaN ± 0.0 NaN ± 0.0 ± 0.0
± infinity Конечное число ± infinity ± 0.0 NaN ± infinity ± infinity
± infinity ± infinity NaN ± 0.0 NaN ± infinity infinity
± 0.0 ± infinity ± 0.0 NaN ± 0.0 ± infinity ± 0.0
NaN Любое число NaN NaN NaN NaN NaN
Любое число NaN NaN NaN NaN NaN NaN

Примечание: если одним из операндов является NaN, то результатом будет NaN.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo