Double在java中到底是什么意思?

2022-09-01 12:36:44

我对Java非常陌生,只是想确认什么是Java?它类似于 Float 还是 Int?任何帮助将不胜感激。我有时也会看到大写字母,有时也会看到小写字母。如果有人能澄清这意味着什么,那就太好了!DoubleDoubledouble


答案 1

Double 是一个包装类,

Double 类将基元类型 double 的值包装在对象中。Double 类型的对象包含一个类型为 double 的字段。

此外,此类还提供了几种方法,用于将双精度转换为字符串,将字符串转换为双精度值,以及在处理双精度值时有用的其他常量和方法。

双精度数据类型

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

检查每种数据类型及其范围:Java的基元数据类型


重要提示 :如果您正在考虑使用双精度值,则需要在使用它之前重新考虑。Java 陷阱:双重


答案 2

在对@paxdiablo的回答的评论中,您问:

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

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


在两者之间做出决定doublefloat

一方面,a 占用 8 个字节,而 .如果您有很多,这可能很重要,尽管它也可能没有影响。(考虑以下情况:值位于 64 位机器上的字段或局部变量中,并且 JVM 在 64 位边界上对齐它们。此外,带值的浮点算术通常比带值的浮点算术慢...虽然这再次依赖于硬件。doublefloatdoublefloat

另一方面,a 可以表示比 a 更大(和更小)的数字,并且可以以两倍以上的精度表示它们。有关详细信息,请参阅维基百科doublefloat

棘手的问题是知道您是否真的需要.在某些情况下,很明显你需要它。在其他情况下,它并不那么明显。例如,如果您正在进行诸如反转矩阵或计算标准偏差之类的计算,则额外的精度可能至关重要。另一方面,在某些情况下,甚至不会为您提供足够的精度。(并当心期望的陷阱,并给你一个确切的表示。他们不会,他们不能!doubledoublefloatdouble

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


在两者之间做出决定DoubleFloat

对于 vs 的情况,精度和范围问题与 vs. 相同,但相对性能度量将略有不同。DoubleFloatdoublefloat

  • A(在 32 位计算机上)通常需要 16 个字节 + 4 个字节作为参考,而 .将其与 8 个字节与 4 个字节进行比较。因此,该比率为5比4,而2比1。DoubleFloatdoublefloat

  • 算术涉及并且通常涉及取消引用指针并创建一个新对象来保存结果(取决于环境)。这些额外的开销也会影响有利于案例的比率。DoubleFloatDouble


正确性

话虽如此,最重要的是正确性,这通常意味着获得最准确的答案。即使准确性并不重要,“太准确”通常也没有错。因此,简单的“经验法则”是优先使用 ,除非存在压倒一切的性能要求,并且您有确凿的证据表明使用将对该要求产生影响。doublefloatfloat