在 Java 里,Double(双精度浮点数,64 位)的“转换”通常分为几类场景。下面按最常见用法系统说明。
// 推荐(允许 null,返回 Double 对象)
Double d1 = Double.valueOf("3.14");
// 基本类型 double
double d2 = Double.parseDouble("3.14");
// 可能抛异常
NumberFormatException
Double d = 3.14;
String s1 = d.toString();
String s2 = String.valueOf(d);
String s3 = String.format("%.2f", d); // 格式化
double a = 3.14;
Double b = a; // 自动装箱
double c = b; // 自动拆箱
Double d = Double.valueOf(a);
double e = d.doubleValue();
Double d = 9.99;
int i = d.intValue(); // 9
long l = d.longValue(); // 9
// 或
int i2 = (int)(double)d; // 强制转换
int a = 10;
Double d = (double) a;
Double d2 = Double.valueOf(a);
Double d = 3.14;
float f = d.floatValue();
Float f2 = 3.14f;
Double d2 = f2.doubleValue();
⚠️ 注意:float → double 安全,double → float 可能丢精度
import java.math.BigDecimal;
Double d = 3.14;
// 推荐方式(避免二进制误差)
BigDecimal bd = BigDecimal.valueOf(d);
// 不推荐(可能引入精度问题)
BigDecimal bad = new BigDecimal(d);
// 反向
Double d2 = bd.doubleValue();
✅ 金融计算必须用 BigDecimal
Double d = 3.14;
long bits = Double.doubleToLongBits(d);
Double d2 = Double.longBitsToDouble(bits);
Double d = null;
double x = d; // NullPointerException
System.out.println(0.1 + 0.2); // 0.30000000000000004
Double a = 0.1 + 0.2;
Double b = 0.3;
a.equals(b); // false(不推荐)
Math.abs(a - b) < 1e-9; // 推荐
| 转换 | 方式 |
|---|---|
| String → Double | Double.valueOf() |
| Double → String | String.valueOf() |
| Double → int | intValue() |
| int → Double | Double.valueOf() |
| Double → BigDecimal | BigDecimal.valueOf() |
| 精确计算 | BigDecimal |
如果你有具体使用场景(如:数据库、JSON、Excel、金融计算、前端传参),可以告诉我,我可以给你更针对性的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。