java保留两位小数详解(3种常用方法)

java保留两位小数详解(3种常用方法)-mikechen

Java保留两位小数是Java开发经常使用到的,下面给大家介绍常见的3种Java保留两位小数@mikechen

使用DecimalFormat 类

DecimalFormat 类是 Java 中用于格式化数字的工具之一,它允许你定义自定义格式,包括小数点后的位数。

如下所示:

import java.text.DecimalFormat;

double number = 12.3456;
DecimalFormat df = new DecimalFormat("#.##");
double result = Double.parseDouble(df.format(number));
System.out.println(result);

在上面的示例中,DecimalFormat 使用了格式字符串 # 和 ## 来保留两位小数,这将输出 12.35,同样是四舍五入到两位小数。

 

使用 BigDecimal 类

BigDecimal 是一个精确的十进制数值类,它可以用于精确控制小数位数。

如下所示:

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        double number = 12.3456;
        BigDecimal bd = new BigDecimal(number);
        bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); // 设置小数点后保留两位,ROUND_HALF_UP 表示四舍五入
        double formattedNumber = bd.doubleValue();
        System.out.println(formattedNumber);
    }
}

这个方法同样输出 12.35,使用 BigDecimal 可以避免浮点数精度问题,适用于需要精确控制小数位数的场景。

DecimalFormat 通常用于显示目的,而不是进行精确的计算,它不提供用于数字运算的方法。

BigDecimal 是为精确计算而设计的,它提供了丰富的数学操作方法,包括加法、减法、乘法、除法等,以确保计算的精确性。

如果需要高精度的数值计算,特别是在金融领域或其他需要精确计算的场景,BigDecimal 是更合适的选择。

 

使用 String.format 方法

String.format 允许你以指定格式格式化字符串。你可以使用 %f 占位符来表示一个浮点数,后面的 .2 表示保留两位小数。

如下所示:

public class Main {
    public static void main(String[] args) {
        double number = 12.3456;
        String formattedNumber = String.format("%.2f", number);
        System.out.println(formattedNumber);
    }
}

输出结果也为 12.35。

这三种方法都可以用于保留两位小数,具体选择哪种方法取决于你的需求和偏好。

如果你只是需要格式化输出,DecimalFormat 和 String.format 是不错的选择。

如果需要在计算中保留小数点精度并避免浮点数精度问题,使用 BigDecimal 是更合适的方法。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法