美文网首页
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