欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

保留三位有效数字----java

程序员文章站 2022-05-18 16:54:27
...
public static int magnitude(Double price){
        if (price == 0.0) {return 0;}
        int fac;
        Long i;
        Long k = 10L;
        if (price > 1) {
            i = price.longValue();
            fac = 0;
            while (i / k != 0L) {
                fac++;
                k *= 10;
            }
        } else {
            fac = -1;
            while (price * k < 1) {
                fac--;
                k *= 10;
            }
        }
        return fac;
    }
    /**
     * 数字格式化 - 最少保留{num}位有效数字 - 保留 {min}~{max} 为小数 - format02
     */
    public static String formatSignificantDigit(Double price) {
        int min = 2;
        int max= 8;
        int num = 3;
        boolean sign = false;
        Double rate = 1.0;
        Double value = price * rate;
        int level = magnitude(Math.abs(value));
        int count = Math.max(min, Math.min(max, num - level - 1));
        return String.format("%"+(sign?"+": "")+"."+count + "f", value);
    }

    public static void main(String[] args) {
        Double price = 0.00019865652;
        String v  = formatSignificantDigit(price);
        System.out.println(String.format("%.2f", Math.PI));
        System.out.println(v);
    }

 

相关标签: java