案例背景:为了计算精度,数据库存储价格等字段时,定义的字段类型是Decimal(20,15),即保留15位小数。但是当我们进行业务导出时,直接返回BigDecimal类型的字段会导致excel文件中改字段不足15位的字段自动填充的许多0。如下图:
当小数点后位数过多,多余的0没有实际意义,根据业务需求需要去掉多余的0,可以调用相关方法去掉小数后多余0
例如:
public static void main(String[] args) {
BigDecimal big= new BigDecimal("0.500000000");
//stripTrailingZeros()函数就是用于去除末尾多余的0的
BigDecimal big1= big.stripTrailingZeros();
//根据业务需求可以继续将其转为String
String str= big1.toPlainString();
//打印结果,=0.5
System.out.println(str);
}
注:stripTrailingZeros()函数就是用于去除末尾多余的0的,但是如果该字段本身的数据是10.00,此时程序的输出为: 1.00E+01,如右图:。
这是科学计数法,可能并不是我们想要的。这个问题的解决办法就是用.toPlainString()将得到的结果再转一下。即