java 输出去掉前导的 0 和后面不要的 0

转:
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());
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/dear_jia/article/details/80185474
0