在 Java 中,Double(java.lang.Double)是 double 基本数据类型的包装类,用于表示 64 位双精度浮点数(IEEE 754 标准)。下面从多个角度说明它的特点。
| 部分 | 位数 |
|---|---|
| 符号位 | 1 位 |
| 指数位 | 11 位 |
| 尾数位 | 52 位 |
±4.9e-324 到 ±1.8e308double:默认 0.0Double:默认 nullDouble d1 = 3.14; // 自动装箱
double d2 = d1; // 自动拆箱
Double 对象一旦创建,值不能改变。
Double.MAX_VALUE
Double.MIN_VALUE
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
Double.NaN
System.out.println(0.1 + 0.2); // 0.30000000000000004
✅ 原因:二进制无法精确表示某些十进制小数
❌ 错误用法:
double money = 0.1 + 0.2;
✅ 正确做法:
BigDecimalDouble.isNaN(d)
示例:
double x = Math.sqrt(-1); // NaN
Double.isInfinite(d)
Double a = 0.1 + 0.2;
Double b = 0.3;
System.out.println(a == b); // false
Double.compare(a, b) == 0
或:
Math.abs(a - b) < 1e-9
| 特性 | float | double |
|---|---|---|
| 位数 | 32 | 64 |
| 精度 | ~7 位 | ~15–17 位 |
| 性能 | 快 | 稍慢 |
| 默认推荐 | 否 | ✅ |
✅ Java 中默认浮点数是 double
✅ 适合:
❌ 不适合:
如果你愿意,我也可以:
Double 缓存机制BigDecimal 用法免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。