Метод ulp
Метод ulp класса Math возвращает
расстояние между переданным числом и следующим
за ним числом с плавающей точкой в направлении
положительной бесконечности. Простыми словами,
это минимальный шаг, на который можно изменить
число, не потеряв его точность. В первый параметр
мы передаем число типа double, для которого
нужно найти единицу младшего разряда. Метод
возвращает значение типа double.
Если переданное число равно NaN, метод
вернет NaN. Если число равно положительной
или отрицательной бесконечности, метод вернет
положительную бесконечность. Если число равно
нулю, метод вернет значение Double.MIN_VALUE.
Синтаксис
Math.ulp(value)
Пример
Давайте найдем единицу младшего разряда для
числа 1.0:
public class Main
{
public static void main(String[] args)
{
double res = Math.ulp(1.0);
System.out.println(res);
}
}
Результат выполнения кода:
2.220446049250313E-16
Пример
Давайте сравним единицу младшего разряда для
чисел 1.0 и 100.0:
public class Main
{
public static void main(String[] args)
{
double res1 = Math.ulp(1.0);
double res2 = Math.ulp(100.0);
System.out.println("ulp(1.0) = " + res1);
System.out.println("ulp(100.0) = " + res2);
}
}
Результат выполнения кода:
ulp(1.0) = 2.220446049250313E-16
ulp(100.0) = 1.4210854715202004E-14
Пример
Давайте проверим работу метода для особых
значений 0.0 и Double.POSITIVE_INFINITY:
public class Main
{
public static void main(String[] args)
{
double res1 = Math.ulp(0.0);
double res2 = Math.ulp(Double.POSITIVE_INFINITY);
System.out.println("ulp(0.0) = " + res1);
System.out.println("ulp(Infinity) = " + res2);
}
}
Результат выполнения кода:
ulp(0.0) = 4.9E-324
ulp(Infinity) = Infinity