Диапазон значения double и float в Java

590
11 октября 2017, 06:24

В таблице диапазонов значений переменных (Java) Double и Float соответствуют значения от 1.7e-308 до 1.7e+308 и от 3.4e-038 до 3.4e+038. При это у Integer диапазон начинается с отрицательного числа, то есть с -2.147... Хотелось бы узнать почему так, если и Double, и Float могут быть отрицательными.

Answer 1

Максимальное значение double задается константой:

public static final double MAX_VALUE=1.7976931348623157E308;

и как говорит документация:

A constant holding the largest positive finite value of type double

В битах это выглядит так:

Как видно знаку отведен отдельный бит. Соответственно диапазон значений будет равен от -Double.MAX_VALUE до +Double.MAX_VALUE- как нетрудно заметить из битовой маски Double - в таком формате невозможно представить точный 0, а можно только Double.MIN_VALUE=4.9E-324

В противоположность ему целые числа в Java хранятся в т.н. дополнительном коде - он же Two's Complement, грубо говоря, отрицательные числа (в целом представлении) хранятся отдельно, а не через представление положительного целого числа и отдельно знака - примерно так:

READ ALSO
как установить (загрузить, не знаю как правильно) DL4J в Intellij?

как установить (загрузить, не знаю как правильно) DL4J в Intellij?

На сайте, насколько я понял, предлагают скачать сразу примеры и их разбирать

265
Exception in thread “main” java.lang.ClassNotFoundException

Exception in thread “main” java.lang.ClassNotFoundException

Существует проект Intellij Idea с двумя модулями, в каждом из которых есть файл "Mainjava"

222
Подсчет количества дней из даты

Подсчет количества дней из даты

У меня есть метод, который считает разницу между датой покупки и датой продажиМне нужно высчитать количество дней, которое прошло в этом...

335
Как сделать событие календаре?

Как сделать событие календаре?

Доброго времени сутокЕсть приложение(календарь) основано на CalendarView

251