BigDecimal 转字符串,并去掉尾部的0

有一种写法,先转成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);

执行结果:
BigDecimal 转字符串,并去掉尾部的0_第1张图片

另一种方式,应用BigDecimal自身的方法:

stripTrailingZeros() 去掉尾部的0;
toPlainString() 转化字符串,非科学计数法。

BigDecimal target = new BigDecimal("5375130.000000");
String str = target.stripTrailingZeros().toPlainString();

BigDecimal 转字符串,并去掉尾部的0_第2张图片

你可能感兴趣的:(java)