转:
https://blog.csdn.net/By_vain/article/details/51228358
去掉前导的0,即把一个数字小数点前的0去掉。可以将该数字转换为字符串,然后把小数点前的数字与0比较,若为0,去掉。与0比较可用BigDecimal类下的compareTo()方法。去掉后面的0,例如使123.45000变为123.45可用BigDecimal类下的stripTrailingZeros()方法。另外,如果输出的结果为科学计数法,可用toPlainString()方法改为普通的数字表示。
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); while(input.hasNext()){ String str = input.nextLine(); BigDecimal r = new BigDecimal(str.substring(0, 6)); int n; if(str.charAt(7) == ' '){ n = Integer.valueOf(str.substring(8, 9)); }else{ n = Integer.valueOf(str.substring(7, 9)); } BigDecimal temp = r; for(int i = 0; i < n-1; i++){ temp = temp.multiply(r); } String[] arr = temp.toPlainString().split("\\."); BigDecimal pre = new BigDecimal(arr[0]); BigDecimal zero = new BigDecimal("0"); if(pre.compareTo(zero) == 0){ System.out.println("."+arr[1]); }else{ System.out.println(temp.stripTrailingZeros().toPlainString()); } } } }