有一种写法,先转成Double
BigDecimal target = new BigDecimal("5375130.000000");
BigDecimal.valueOf(Double.parseDouble(target.toString())).toString()
这种写法发现两个问题:
1、小于8位数时,可以正常转化,但如果是整数的话,后边会带着一个".0"。
2、大于等于8位数时,如果是10的倍数的话,转化的还是科学计数法类型的;如果不是的话,可以正常转化,后边不会带着“.0”。
测试代码:
BigDecimal target = new BigDecimal("5375130.000000");
String str = BigDecimal.valueOf(Double.parseDouble(target.toString())).toString();
System.out.println("小于8位,并且是整数:" + str);
System.out.println("======================");
target = new BigDecimal("12676490.000000");
str = BigDecimal.valueOf(Double.parseDouble(target.toString())).toString();
System.out.println("大于等于8位,并且是10的倍数" + str);
System.out.println("======================");
target = new BigDecimal("12676491.000000");
str = BigDecimal.valueOf(Double.parseDouble(target.toString())).toString();
System.out.println("大于等于8位,不是10的倍数" + str);
执行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/807c7ded85be4952a249a76779b5e564.png)
另一种方式,应用BigDecimal自身的方法:
stripTrailingZeros() 去掉尾部的0;
toPlainString() 转化字符串,非科学计数法。
BigDecimal target = new BigDecimal("5375130.000000");
String str = target.stripTrailingZeros().toPlainString();
![在这里插入图片描述](https://img-blog.csdnimg.cn/2716c373f18c4ece9f567f64ec530e54.png)