double是Java中64位双精度浮点数类型,占8字节,遵循IEEE 754标准(1位符号、11位指数、52位尾数),精度约15~17位,适用于科学计算但不适用于金融等需精确计算的场景。

Java中double是64位(8字节)双精度浮点数类型,用于存储带小数的数值,精度约15~17位有效数字。
声明double变量的基本写法
声明时需指定类型和变量名,可同时初始化或后续赋值:
-
double price = 19.99;—— 声明并初始化 -
double distance;然后distance = 123.456;—— 先声明后赋值 -
double a = 1.0, b = 3.14159, c = -0.001;—— 一行声明多个变量
理解8字节内存占用的实际含义
double在JVM中固定占8个字节(64位),无论数值大小或是否含小数。这8字节按IEEE 754标准分为三部分:
- 1位符号位(正负号)
- 11位指数位(决定数量级)
- 52位尾数位(决定精度)
因此double能表示极大(约±1.8×10³⁰⁸)或极小(约±5×10⁻³²⁴)的数,但不保证所有小数都能精确存储——例如0.1 + 0.2 != 0.3(二进制无法精确表示十进制小数)。
立即学习“Java免费学习笔记(深入)”;
常见使用注意事项
避免把double用于精确计算场景(如金融运算),应改用BigDecimal;日常科学计算、物理模拟等对精度容忍度较高的场景适合使用double。
- 字面量默认为
double,写3.14即可,无需加d或D(但3.14f是float) - 与整数运算时自动提升为
double:int x = 5; double y = x * 2.5;结果为12.5 - 打印时可用
System.out.printf("%.2f", value)控制小数位数,避免显示过多无效位
验证内存占用的小技巧
Java不直接提供单个变量内存大小的API,但可通过java.lang.instrument或第三方库(如ObjectSizeCalculator)估算对象开销;对基本类型而言,JVM规范明确double占8字节,数组中每个元素也严格占8字节(如double[100]至少占800字节+对象头开销)。


















