BigDecimal数据乘0后的数据为什么是以科学计数法的形式显示?急求解
public static void main(String[] args) { BigDecimal bd = new BigDecimal(0.0001); BigDecimal bd1 = new BigDecimal(0); System.out.println(bd.multiply(bd1)); } 显示是结果:0E-66
答:因为0.0001用66位表示
解决办法:
首先我们需要了解BigDecimal提供的一些方法
stripTrailingZeros()去除末尾多余的0。
toPlainString()将科学计数法转换为普通的计数方式
有了这两个方法我们就可以完美的对数据库转为实体对象的BigDecimal类型字段进行处理。
在实体类中定义数据库中BigDecimal的字段为String类型。
/** * 对BigDecimal进行小数点后3位精度处理,并转换成字符串 * @param fusionNum * @return */ public String getBigDecimalStatisticalProcess(String fusionNum){ BigDecimal bigDecimal = new BigDecimal(fusionNum); BigDecimal scale = bigDecimal.setScale(3, BigDecimal.ROUND_HALF_UP); return scale.stripTrailingZeros().toPlainString(); } ———————————————— 版权声明:本文为CSDN博主「有趣的灵魂_不世俗的心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_42324471/article/details/96882383
参考:BigDecimal数据乘0后的数据为什么是以科学计数法的形式显示?急求解-CSDN社区
对BigDecimal进行精度处理,将科学计数法转为普通表示法_有趣的灵魂_不世俗的心的博客-CSDN博客_bigdecimal 科学计数转普通计数