В комментарии к ответу @ 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
будет иметь значениев отношении этого требования.