Ява и размер двойной

1

В настоящее время я изучаю Java, и в моей книге там написано, что двойной может варьироваться от ~ 4,94E-324 до ~ 1,798E + 308

У меня есть некоторые вопросы к этому: как двойной может быть равен нулю (0)? Как двойной d = 0; Почему это возможно, когда у double нет диапазона, включая ноль? И почему отрицательные числа отсутствуют? Я что-то забыл? Спасибо за вашу помощь!

С уважением, Макси

  • 1
    Двойные значения могут быть отрицательными. Я подозреваю, что книга говорила о диапазоне величин (который также может быть 0).
  • 0
    Я знаю, что двойные значения могут быть отрицательными. В книге говорилось о двойном диапазоне (DOUBLE.MIN_VALUE и DOUBLE.MAX_VALUE). Так почему MIN_VALUE выше 0?
Показать ещё 2 комментария
Теги:
double
size

2 ответа

1

Я думаю, вы интерпретируете диапазон в математическом смысле. То, что ваша книга означает по диапазону, - это то, как мало конечного числа и сколько больших конечного числа Double может произвести как для отрицательных, так и для положительных значений. Таким образом, в основном, насколько близко он может доходить до 0 с конечными значениями и как близко он может доходить до бесконечности с конечными значениями. Фактический диапазон в математическом смысле Double - это нечто вроде -1.7*10^308 до 1.7*10^308.

В классе Double есть члены, которые содержат значение Min и Max. Взгляните на участников Min_VALUE и Max_VALUE для Double. Действительно, математический диапазон является побочным продуктом диапазона в вашей книге ([-Double.MAX_VALUE, Double.MAX_VALUE]), что является результатом того, сколько степеней точности Double может удерживаться.

  • 0
    Аааа, вот что я имел ввиду! Спасибо! Но как узнать диапазон в математическом смысле? Вы можете рассчитать это или это просто определенная вещь?
  • 0
    В классе Double есть члены, которые содержат значения Min и Max. Посмотрите на Min_VALUE и Max_VALUE для Double . Действительно, математический диапазон является побочным продуктом диапазона в вашей книге, который является результатом того, сколько степеней точности может выдержать Double .
Показать ещё 2 комментария
1

Удваивает и плавает на большинстве языков программирования более сложно. Вы можете найти более техническое объяснение, просмотрев стандарт IEEE 754 для чисел с плавающей запятой.

В принципе, числа с плавающей запятой (в java, типы переменных float и double) эффективно хранятся в научной нотации со знаком, мантиссой и экспонентой. (База для экспонента всегда 2). Как это преобразование в двоичный формат немного сложнее, но важная часть, которую нужно знать, состоит в том, что числа эффективно сохраняются как показатель + / - mantissa * 2^exponent.

Однако мантисса и экспонента имеют фиксированные диапазоны. То, о чем говорит ваш учебник, - это диапазон значений, который возможен на основе диапазона экспоненты. То есть, насколько велики или малые значения могут быть, если вы выберете наибольший или наименьший возможный показатель, игнорируя знак значения. Zero также игнорируется для этого случая, потому что в научной нотации нуль - тривиальный случай, который не иллюстрирует доступный диапазон показателей.

У парного разряда точность около 15-16 цифр, т.е. Вы можете представлять числа с мантиссой длиной 15-16 цифр независимо от экспоненты. Независимо от мантиссы, вы можете представлять числа в диапазоне от примерно 10^-324 до примерно 10^308. И независимо от мантиссы и экспоненты, вы можете представлять как положительные, так и отрицательные значения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню