在 Java 中,Double 和双精度(double precision)通常是指在计算机中用来表示双精度浮点数的一种数据类型。下面从几个层面给你解释清楚:
“双精度”是相对于“单精度(float)”而言的:
| 类型 | 中文 | 位数 | 精度(约小数位) | Java 类型 |
|---|---|---|---|---|
| 单精度 | float | 32 位 | 7 位十进制 | float |
| 双精度 | double | 64 位 | 15–17 位十进制 | double / Double |
双精度 = 用 64 位二进制来表示一个小数,比单精度更精确,也更适合科学计算、金融(谨慎使用)、工程计算等。
double 和 Doubledoubledouble a = 3.14;
DoubleDouble b = 3.14;
double 的包装类(Wrapper Class)List<Double>)、泛型中常见方法:
Double.parseDouble("3.14"); // 字符串转 double
Double.valueOf(3.14);
Double.MAX_VALUE; // 最大值
Double.MIN_VALUE; // 最小正值
Double.isNaN(0.0/0.0);
一个 double 在内存中是这样分配的(64 位):
这也是为什么 浮点数不能精确表示某些小数(如 0.1):
System.out.println(0.1 + 0.2); // 0.30000000000000004
doubleDoubleBigDecimalBigDecimal money = new BigDecimal("0.1");
如果你愿意,我也可以:
double 的内存结构float / double / BigDecimal0.1 + 0.2 ≠ 0.3你想深入了解哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。