Что именно означает Double в java?

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

Ответы

Ответ 1

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

Двойной класс обертывает значение примитивный тип double в объекте. объект типа Double содержит одно поле, тип которого двойной.

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

двойной тип данных,

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

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


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

Ответ 2

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

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

Это сложный вопрос. Я буду заниматься этим в двух частях


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

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

С другой стороны, double может представлять большее (и меньшее) число, чем a float, и может представлять их более чем в два раза. Подробнее см. Wikipedia.

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

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


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

Для случая double versus float проблемы точности и дальности такие же, как и для 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

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

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

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