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

发布时间 2023-06-06 14:02:03作者: 编程小白1024

 

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