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/天,具体规则查看活动详情