美文网首页
BigDecimal初始化精度问题

BigDecimal初始化精度问题

作者: 雨中漫步的北极熊 | 来源:发表于2017-11-30 17:24 被阅读163次
BigDecimal初始化问题
       最近使用BigDecimal在订单金额结算时出现的精度问题,查询资料才发现原因
代码如下
  BigDecimal b1=new BigDecimal(52.165);
  BigDecimal b2=BigDecimal.valueOf(52.165);
  System.out.println(b1+"==="+b2);
输出结果如下
   52.16499999999999914734871708787977695465087890625===52.165

查询资料发现BigDecimal.valueOf(double) 初始化数据是把Double.toString(double)方法提供的规范的字符串表示形式将double转换为BigDecimal

而new BigDecimal(double)中是将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式,也就是说使用new方式的初始化会出现精度缺失
而使用valueOf()方式初始化就不会出现精度缺失

相关文章

网友评论

      本文标题:BigDecimal初始化精度问题

      本文链接:https://www.haomeiwen.com/subject/xttbbxtx.html