Double
是什么?它是否类似于Float或Int?任何帮助都将不胜感激。我有时也会看到大写的Double
和小写的double
。如果有人能够澄清这意味着什么,那就太好了!Double
是什么?它是否类似于Float或Int?任何帮助都将不胜感激。我有时也会看到大写的Double
和小写的double
。如果有人能够澄清这意味着什么,那就太好了!Double是一个包装类,
Double类用于将原始类型double的值封装在对象中。类型为Double的对象包含一个double类型的字段。
此外,该类还提供了几种将double转换为String和String转换为double的方法,以及其他在处理double时有用的常量和方法。
double数据类型是双精度64位IEEE 754浮点型。它的值范围是4.94065645841246544e-324d到1.79769313486231570e+308d(正或负)。对于十进制值,通常使用此数据类型作为默认选择。如上所述,此数据类型不应用于精确值(例如货币)。
使用其范围检查每个数据类型: Java的基本数据类型。
重要说明:如果您想使用double类型来表示精确值,请在使用之前重新考虑。Java陷阱:double
在@paxdiablo的回答中,您发表了评论:
"所以基本上使用Double比Float更好吗?"
这是一个复杂的问题。我将分两部分来处理。
double
和 float
之间做出决策一方面,double
占用 8 个字节,而 float
占用 4 个字节。如果你有很多这样的变量,这可能是重要的,但也可能没有影响。(考虑值在 64 位机器上的字段或局部变量的情况,JVM 将它们对齐在 64 位边界上。)此外,使用 double
进行浮点运算通常比使用 float
更慢...尽管这又取决于硬件。
另一方面,double
可以表示比 float
更大(和更小)的数字,并且可以用超过两倍的精度来表示它们。有关详细信息,请参阅 Wikipedia。
棘手的问题是知道您是否实际上需要 double
的额外范围和精度。在某些情况下,显然需要它。在其他情况下,就不那么明显了。例如,如果您正在进行诸如求逆矩阵或计算标准差之类的计算,则额外的精度可能至关重要。另一方面,在某些情况下,即使是 double
也无法给您足够的精度。(并且要注意期望 float
和 double
给您提供精确表示的陷阱。它们不会,也不能!)
有一门数学分支叫做数值分析,它处理实际数值计算中的舍入误差等问题。在20世纪70年代,它曾是计算机科学课程的标准组成部分。
Double
和 Float
对于 Double
和 Float
的情况,精度和范围问题与 double
和 float
相同,但相对性能的度量方式略有不同。
Double
(在 32 位机器上)通常需要 16 字节 + 4 字节的引用,而 Float
则需要 12 + 4 字节。与 double
和 float
情况相比,8 字节对 4 字节,因此比例为 5:4 而不是 2:1。
涉及 Double
和 Float
的算术运算通常涉及解除引用指针并创建新对象以保存结果(具体取决于情况)。这些额外开销也会使 Double
的比例更好。
说了这么多,最重要的是正确性,通常意味着得到最准确的答案。即使准确性并不关键,过于准确通常也不会有错。因此,简单的“经验法则”是优先使用double
,除非有优先的性能要求,并且您有确凿的证据表明使用float
将在满足该要求方面产生差异。
双精度浮点数是一种IEEE754双精度浮点数,类似于浮点数但具有更大的范围和精度。
IEEE754单精度数有32位(1个符号位,8个指数位和23个尾数位),而双精度数有64位(1个符号位,11个指数位和52个尾数位)。
Java中的Double
是基本类型double的类版本-您可以使用双精度数,但如果要对它们进行需要对象的操作(例如将它们放入集合中),则需要将它们装箱为Double
对象。
Double
比使用 Float
更好吗? - maclunian