Что именно означает 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
.