Java保留有效小数与百分数

发布时间 2023-05-08 20:04:06作者: ZJHqs

Java保留有效小数与百分数

1.有效小数

    /**
     * 保留有效小数
     * @param targetForm    目标形式
     * @param originNum     初始数字
     * @return              有效小数
     */
    public String getSignificantDecimal(String targetForm, String originNum) {
        DecimalFormat decimalFormat = new DecimalFormat(targetForm);
        String ans = decimalFormat.format(new BigDecimal(originNum));
        return ans;
    }

2.有效百分数

    /**
     * 保留有效百分数
     * @param targetForm    目标形式
     * @param originNum     初始数字
     * @return              有效百分数
     */
    public String getPercentage(String targetForm, String originNum) {
        DecimalFormat decimalFormat = new DecimalFormat(targetForm);
        String ans = decimalFormat.format(new BigDecimal(originNum).multiply(new BigDecimal("100"))) + "%";
        return ans;
    }

3.使用演示

  1. 原始数字为1,需要保留3位小数
public class Main {
    public static void main(String[] args) {
        // 目标形式
        String targetForm = "0.000";
        // 原始数字
        String originNum = "1";
        Main main = new Main();
        System.out.println(main.getSignificantDecimal(targetForm, originNum));
    }

        /**
     * 保留有效小数
     * @param targetForm    目标形式
     * @param originNum     初始数字
     * @return              有效小数
     */
    public String getSignificantDecimal(String targetForm, String originNum) {
        DecimalFormat decimalFormat = new DecimalFormat(targetForm);
        String ans = decimalFormat.format(new BigDecimal(originNum));
        return ans;
    }

    /**
     * 保留有效百分数
     * @param targetForm    目标形式
     * @param originNum     初始数字
     * @return              有效百分数
     */
    public String getPercentage(String targetForm, String originNum) {
        DecimalFormat decimalFormat = new DecimalFormat(targetForm);
        String ans = decimalFormat.format(new BigDecimal(originNum).multiply(new BigDecimal("100"))) + "%";
        return ans;
    }
}

得到结果:1.000

  1. 原始数字为1.35,需要保留1位小数
public class Main {
    public static void main(String[] args) {
        // 目标形式
        String targetForm = "0.0";
        // 原始数字
        String originNum = "1.35";
        Main main = new Main();
        System.out.println(main.getSignificantDecimal(targetForm, originNum));
    }
}

得到结果1.4

  1. 原始数字为1,需要转成100.0%
public class Main {
    public static void main(String[] args) {
        // 目标形式
        String targetForm = "0.0";
        // 原始数字
        String originNum = "1";
        Main main = new Main();
        System.out.println(main.getPercentage(targetForm, originNum));
    }
}
  1. 原始数字为0.798,需要转成不带小数的百分数
public class Main {
    public static void main(String[] args) {
        // 目标形式
        String targetForm = "0";
        // 原始数字
        String originNum = "0.798";
        Main main = new Main();
        System.out.println(main.getPercentage(targetForm, originNum));
    }

结果为80%

补充说明

需要import这两个包

import java.math.BigDecimal;
import java.text.DecimalFormat;