美文网首页
Java 判断小数点位数四舍五入到4位数

Java 判断小数点位数四舍五入到4位数

作者: sssssss_ | 来源:发表于2019-11-28 09:42 被阅读0次

    需求

    由于在代码中四叉树会对double型坐标进行递归遍历,当小数点过多的情况会导致死循环,所以需要对小数点的位数进行控制。

    public static void main(String[] args) {
        List<Double> aar = new ArrayList<>();
        aar.add(8892.56856611);
        aar.add(5553.1);
        aar.add((double) 345);
        aar.add(6666665562.44444444445656856611);
        aar.add(6666665562.40000);
        for (int i = 0; i < aar.size(); i++) {
            numcut(aar.get(i));
        }
    }
    private static void numcut(double n) {
        DecimalFormat df = new DecimalFormat("#.####");// 不需要补0
        // DecimalFormat df1 = new DecimalFormat("#.0000"); // 会补0
        System.out.println(df.format(n));
        // System.out.println(df1.format(n));
    }
    

    输出结果:

    可以看到代码中的DecimalFormat传入的格式如果是0的话,会对缺掉的数据进行补全。

    8892.5686
    8892.5686
    5553.1
    5553.1000
    345
    345.0000
    6666665562.4444
    6666665562.4444
    6666665562.4
    6666665562.4000
    

    后续

    当转换成字符串的时候,发现一切都ok,但再将字符串转成double的时候就出现问题了。所以换了一种方法:

    double n = new BigDecimal(n).setScale(4,BigDecimal .ROUND_HALF_UP).doubleValue();
    

    总结

    在写这个小功能的时候,我总觉得需要对长度进行判断再去执行DecimalFormat方法裁剪小数点,但判断的过程需要将double转换成String,然后进行小数点的判断,这样一来,在数据很多的情况下需要更多的资源消耗(未经验证)。

    相关文章

      网友评论

          本文标题:Java 判断小数点位数四舍五入到4位数

          本文链接:https://www.haomeiwen.com/subject/udsvwctx.html