Java 小数保留一位有效数字

最近在项目中遇到一个小问题,对小数保留一位有效数字;在这里跟大家分享一下解决方法,如果大家有更好的解决方法欢迎评论指点

    //小数部分取到第一个非0位,并向正上取值
    public double getCeilDouble(double number) {
        String str = new DecimalFormat("0.0000000000").format(number);        //将number格式化为小数点后面有10位数的小数
        String[] fore = str.split("[1-9]", 2);//截取小数前面为0的部分《如:0.0002,取0.000)
        String[] split = str.split(".", 2);        //截取小数点后面的部分(包含了小数点)
        int aft = Integer.parseInt(split[1].substring(1));    //去除小数点然后转成整数
        int len = (aft+"").length();//获取有几位数
        aft=(int) Math.ceil(aft/Math.pow(10, len-1));        //最后保留1位(向正取值)
        return Double.parseDouble(fore[0]+aft);
    }

因为需求有效数字我使用的是向上取整,如果需要向下取整或者四舍五入可以将Math.ceil替换成Math.floor或者Math.round

原文地址:https://www.cnblogs.com/gaojinshun/p/12743092.html