Кажется, что наименьшее ненулевое число, которое калькулятор Google может вычислить, равно 2 ^ -1023.Т.е. 2 ^ -1024 равно 0.
В JAVA Double.MIN_VALUE равно 2 ^ -1074.
При чтении о JAVA Double.MIN_VALUE здесь и в Интернете есть много упоминаний IEEE 754но на самом деле ни один из них не говорит, что 2 ^ -1074 - это наименьшее ненулевое число, определенное в IEEE 754.
Итак, мои вопросы:
- Как работает JAVA Double.MIN_VALUEотносятся к определению IEEE 754 наименьшего ненулевого числа?Есть ли такая вещь вообще?
- Почему калькулятор Google не может вычислять меньшие числа, чем 2 ^ -1023, когда, по-видимому, есть такие числа?(Я знаю, что люди не используют их каждый день, но, тем не менее, языки программирования позволяют это)
- В JAVA, если Double.MIN_VALUE == 4.9E-324, то почему (Double.MIN_VALUE + Double.MIN_VALUE) == 1.0E-323, а не 9.8E-324, учитывая, что (4.9E-5 + 4.9E-5) == 9.8E-5?
- Сколько я должен добавить в Double.MIN_VALUE, чтобы сделать его равным нулю?
Вот программа, которую я создал для этих вопросов:
public class Lecture {
public static void main(String[] args) {
double min = Double.MIN_VALUE;
double max = Double.MAX_VALUE;
double minPlusOne = min + 0.0001;
System.out.println("Min + 1: " + minPlusOne);
System.out.println("Double.MIN_VALUE: " + min);
System.out.println("Double.MIN_VALUE: " + max);
double myMin = Math.pow(2, -1074);
System.out.println("2^-1074: " + myMin);
System.out.println("Double.MIN_VALUE == 2^-1074: " + (min == myMin));
System.out.println();
System.out.println("Changed Min:" + (min + min));
double a = 4.9E-5;
double b = a + a;
System.out.println(b);
}
}
РЕДАКТИРОВАТЬ: Как и просили, удаляя последующие вопросы.