温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Double 双精度怎么转BigDecimal

发布时间:2026-07-25 02:27:46 来源:亿速云 阅读:101 作者:小樊 栏目:编程语言

在 Java 中,Double 转 BigDecimal 有几种常见方式,但一定要小心精度问题。下面按推荐程度给你说明。


✅ 推荐方式(避免精度丢失)

✅ 方式一:先转成 String,再转 BigDecimal(最安全 ✅)

double d = 3.14;
BigDecimal bd = new BigDecimal(String.valueOf(d));

或:

BigDecimal bd = new BigDecimal(Double.toString(d));

推荐原因
String 构造器能完整保留你看到的小数,避免二进制误差。


⚠️ 不推荐但常见的方式

❌ 方式二:直接用 new BigDecimal(double)

double d = 3.14;
BigDecimal bd = new BigDecimal(d);

问题
double 本身是二进制浮点数,可能已经不精确了:

System.out.println(new BigDecimal(3.14));
// 输出:3.140000000000000124344978758017532527446746826171875

⚠️ 除非你非常清楚自己在做什么,否则不要用这种方式


✅ 方式三:使用 BigDecimal.valueOf(double)(推荐 ✅✅)

double d = 3.14;
BigDecimal bd = BigDecimal.valueOf(d);

这是最推荐的方式之一

为什么?

  • 内部其实是:BigDecimal.valueOf(d)new BigDecimal(Double.toString(d))
  • 既安全,又简洁

✅ 总结对比

方式 是否推荐 精度是否安全
new BigDecimal(double)
new BigDecimal(String.valueOf(d))
BigDecimal.valueOf(d) ✅✅

✅ 最佳实践(记住这一句就够了)

BigDecimal bd = BigDecimal.valueOf(yourDouble);

如果你有金额、金融计算、精度要求高的场景,一定要用 BigDecimal,并且避免直接用 double 构造。

如果你愿意,我也可以帮你讲:

  • BigDecimal 的加减乘除
  • 金额计算的最佳实践
  • doubleBigDecimal 再转回 double 的坑
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI