一、有一种写法,先转成Double
BigDecimal target = new BigDecimal("5375130.000000");
String str = BigDecimal.valueOf(Double.parseDouble(target.toString())).toString();
System.out.println("小于8位,并且是整数,后边会带着一个\".0\":" + 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的倍数,可以正常转化,后边不会带着“.0”:" + str);
测试结果:
小于8位,并且是整数,后边会带着一个".0":5375130.0
==================================================================
大于等于8位,如果是10的倍数的话,转化的还是科学计数法类型的:1.267649E+7
==================================================================
大于等于8位,不是10的倍数,可以正常转化,后边不会带着“.0”:12676491
Process finished with exit code 0
注意:也就是说采用转Double的方式会出现两个问题:
1、小于8位数时,可以正常转化,但如果是整数的话,后边会带着一个".0"。
2、大于等于8位数时,如果是10的倍数的话,转化的还是科学计数法类型的;如果不是的话,可以正常转化,后边不会带着“.0”。
二、应用BigDecimal自身的方法
BigDecimal target = new BigDecimal("5375130.000000"); String str = target.stripTrailingZeros().toPlainString(); System.out.println("小于8位,并且是整数,后边会带着一个\".0\":" + str); System.out.println("=================================================================="); target = new BigDecimal("12676490.000000"); str = target.stripTrailingZeros().toPlainString(); System.out.println("大于等于8位,如果是10的倍数的:" + str); System.out.println("=================================================================="); target = new BigDecimal("12676491.000000"); str = target.stripTrailingZeros().toPlainString(); System.out.println("大于等于8位,不是10的倍数:" + str);
测试结果:
小于8位,并且是整数,后边会带着一个".0":5375130
==================================================================
大于等于8位,如果是10的倍数的:12676490
==================================================================
大于等于8位,不是10的倍数:12676491
Process finished with exit code 0