Double在java中意味着什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我对Java非常陌生,只想确认一下Double是什么?它是否类似于Float或Int?任何帮助,将不胜感激。我有时也会看到大写字母Double和其他小写字母double。如果有人能够澄清这意味着什么是好的!

提问于
用户回答回答于

Double是一个包装类,

Double类在对象中包装基本类型double的值。Double类型的对象包含一个类型为double的单个字段。 另外,这个类提供了将double转换为String和String转换为double的几种方法,以及用于处理double的其他常量和方法。

双数据类型

双数据类型是一个双精度64位IEEE 754浮点。它的值范围是4.94065645841246544e-324d到1.79769313486231570e + 308d(正值或负值)。对于十进制值,这种数据类型通常是默认选择。如上所述,此数据类型不应用于精确值,例如货币。

检查每个数据类型的范围:Java的基本数据类型

重要提示:如果你正在考虑使用双精度值,在使用之前需要重新考虑。

用户回答回答于

“所以基本上,使用Double比Float更好?”

这是一个复杂的问题。我将分两部分处理

决定double与vsfloat

一方面,a double占用8个字节而不是4个字节float。如果你有很多,这可能很重要,尽管它也可能没有影响。(考虑这些值在64位机器上的字段或局部变量,JVM将它们对齐到64位边界上。)另外,使用double值的浮点运算通常比使用float值的运算速度慢......但是,硬件依赖。

另一方面,a double可以表示比a更大(和更小)的数字,float并且可以以超过两倍的精度来表示它们。

棘手的问题是知道你是否真的需要额外的范围和精度double。在某些情况下,显然你需要它。在其他情况下,它并不那么明显。例如,如果您正在进行诸如反转矩阵或计算标准偏差的计算,那么额外的精度可能很关键。另一方面,在某些情况下甚至不会double给你足够的精度。(并且要小心期待floatdouble给你一个确切的表示,他们不会,他们不能!)

在实际数值计算中,有一个称为数值分析的数学分支,用于处理舍入误差的影响等。它曾经是20世纪70年代计算机科学课程的标准部分。

决定Double与vsFloat

对于DoubleFloat情况下,精度和范围的问题是一样的double对比float,但相对性能指标会略有不同。

  • A Double(在32位机器上)通常需要16个字节+ 4个字节作为参考,而12个+ 4个字节作为参考Float。与此相比,8个字节与4个字节用于doublefloat壳体。所以比例是5比4与2比1。
  • 涉及DoubleFloat涉及的算术通常涉及解引用指针并创建一个新对象来保存结果(取决于具体情况)。这些额外的费用也会影响比例Double

正确性

说了这么多,最重要的是正确性,这通常意味着要得到最准确的答案。即使准确性并不重要,“太准确”通常也没有错。所以,简单的“经验法则”是double优先使用float,除非有最重要的性能要求,并且您有充分的证据表明使用float会对该要求产生影响。

扫码关注云+社区