Что именно Double означает в Java? - PullRequest
20 голосов
/ 12 июня 2011

Я чрезвычайно новичок в Java и просто хотел подтвердить, что такое Double? Это похоже на Float или Int? Любая помощь будет оценена. Я также иногда вижу прописные буквы Double, а иногда строчные double. Если бы кто-то мог уточнить, что это значит, это было бы здорово!

Ответы [ 3 ]

29 голосов
/ 12 июня 2011

Double - это класс-оболочка,

Класс Double оборачивает значение примитивного типа double в объекте.Объект типа Double содержит одно поле с типом double.

Кроме того, этот класс предоставляет несколько методов для преобразования double в String и String в double, а также другие полезные константы и методыпри работе с типом double.

Тип данных double ,

Тип данных double с 64-разрядной плавающей запятой IEEE 754 двойной точноститочка.Диапазон его значений составляет от 4,94065645841246544e-324d до 1,779769313486231570e + 308d (положительный или отрицательный).Для десятичных значений этот тип данных обычно является выбором по умолчанию.Как упомянуто выше, этот тип данных никогда не должен использоваться для точных значений, таких как валюта.

Проверьте каждый тип данных с их диапазонами: Примитивные типы данных Java .


Важное примечание: Если вы планируете использовать double для точных значений, вам необходимо переосмыслить его перед использованием. Ловушки Java: двойной

22 голосов
/ 12 июня 2011

В комментарии к ответу @ paxdiablo вы спросили:

«Итак, в принципе, лучше ли использовать Double чем Float?»

Это сложновопрос.Я рассмотрю его в двух частях:


Выбор между double против float

С одной стороны, double занимает 8 байтов против 4 байтов для float.Если у вас их много, это может быть важно, хотя может и не оказать влияния.(Рассмотрим случай, когда значения находятся в полях или локальных переменных на 64-битном компьютере, и JVM выравнивает их по 64-битным границам.) Кроме того, арифметика с плавающей запятой со значениями double обычно медленнее, чем со значениями float.хотя, опять же, это зависит от аппаратного обеспечения.

С другой стороны, double может представлять большие (и меньшие) числа, чем float, и может представлять их с более чем вдвое большей точностью.За подробностями обращайтесь к Википедии .

Сложный вопрос - узнать, действительно ли вам нужен дополнительный диапазон и точность double.В некоторых случаях очевидно, что вам это нужно.В других это не так очевидно.Например, если вы выполняете вычисления, такие как инвертирование матрицы или вычисление стандартного отклонения, дополнительная точность может быть критической.С другой стороны, в некоторых случаях даже double не даст вам достаточной точности.(И остерегайтесь ловушки ожидания, что float и double дадут вам точное представление. Они не будут и не смогут!)

Существует раздел математики под названием Численный анализ, который имеет дело сс эффектами ошибки округления и т. д. в практических численных расчетах.Раньше это была стандартная часть курсов информатики ... еще в 1970-х годах.


Выбор между Double против Float

Для Double против *В случае 1042 * вопросы точности и дальности такие же, как для double против float, но относительные показатели производительности будут немного отличаться.

  • A Double (на 32-битной машине) обычно занимает 16 байтов + 4 байта для сравнения, по сравнению с 12 + 4 байтами для Float.Сравните это с 8 байтами против 4 байтов для случая double против float.Таким образом, отношение составляет 5 к 4 против 2 к 1.

  • Арифметика, включающая Double и Float, обычно включает разыменование указателя и создание нового объекта длядержать результат (в зависимости от обстоятельств).Эти дополнительные накладные расходы также влияют на отношения в пользу случая Double.


Корректность

Сказав все это, самое важноеэто правильность , а обычно означает получение наиболее точного ответа.И даже если точность не критична, обычно не слишком неправильно быть «слишком точным».Таким образом, простое «практическое правило» состоит в том, чтобы использовать double вместо float, ЕСЛИ НЕ существует отменяющих требований к производительности, и у вас есть веские доказательства того, что использование float будет иметь значениев отношении этого требования.

3 голосов
/ 12 июня 2011

Двойное число - это IEEE754 число с плавающей запятой двойной точности, похожее на число с плавающей запятой, но с большим диапазоном и точностью.

Числа одинарной точности IEEE754 имеют 32 бита (1 знак, 8 показателей степени и 23 бита мантиссы), а числа двойной точности имеют 64 бита (1 знак, 11 показателей степени и 52 бита мантиссы).

A Double в Java является классовой версией двойного базового типа - вы можете использовать double, но, если вы хотите сделать с ними что-то, что требует, чтобы они были объектом (например, поместили их в коллекцию), вам нужно собрать их в Double объект.

...