Double类型数据大小为千万或千万以上时去掉E(这里不是数量级亿)

Double类型数据大小为千万或千万以上时去掉E(这里不是数量级亿)

今天在做数据相加时,第一次遇到double类型的数据大小超过一千万时前台展示的情况

如果我们直接打印出一千万以上的数据时,你会发现打印结果时 1.6693530950000001E7元

最开始时,我还以为这里的E表示亿,一直以为时数据计算错误。

后来偶然发现他跟我的实际值 16693530.95 对比,实际上是小数点右移了7位而已


这样的问题,我们可以做如下处理,使结果看起来很容易理解,即去掉E,我这里有两种方案(同时保留小数点后面两位):

1,使用BigDecimal实现

如下代码所示

new BigDecimal("3.456785333E7").toPlainString()

上面代码结果为 : 34567853.33

2,使用String的format,如下代码所示

double d = 9999910.456456;
for(int i=0;i<20;i++)
d=d+new Double("10.0");
System.out.println(new BigDecimal(String.format("%.2f",d)));

以上代码打印结果为 : 10000110.46


此外,既然E7时向右移,那么E-7是不是向左移动呢?

System.out.println(new BigDecimal("3.456785333E-7").toPlainString());

时的,上面的打印结果就是 : 0.0000003456785333


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img