📜  如何在java中四舍五入(1)

📅  最后修改于: 2023-12-03 15:08:54.798000             🧑  作者: Mango

Java中四舍五入

在 Java 中,有多种方式对数字进行四舍五入。本文将介绍常见的四种方法,以及它们的应用场景。

使用 Math.round() 方法进行四舍五入

Math.round() 方法返回最接近参数的 long 值,同时将结果四舍五入到整数。该方法调用时可传入一个 double 类型的参数,也可以传入一个 float、long 或 int 类型的参数。以下是使用该方法实现四舍五入的示例:

double num = 3.1415926;
long roundedNum = Math.round(num);
System.out.println(roundedNum); // 3

代码中,我们将 double 类型的变量 num 距离最近的整数值进行四舍五入,结果为 3。

使用 DecimalFormat 类进行四舍五入

DecimalFormat 类是 Java API 提供的一个主要用于数字格式化的类。我们可以利用 DecimalFormat 的 setRoundingMode() 方法设定取整的规则,实现任意精度的四舍五入。以下是例子:

double num = 3.1415926;

DecimalFormat df = new DecimalFormat("#.##"); // 保留两位小数
df.setRoundingMode(RoundingMode.HALF_UP); // 四舍五入

System.out.println(df.format(num)); // "3.14"

代码中,我们设置 DecimalFormat 实例 df 的格式为保留两位小数("#.##"),规定了四舍五入的取整规则为 RoundingMode.HALF_UP(四舍五入),最后输出结果为 3.14。

使用 BigDecimal 类进行四舍五入

BigDecimal 类是 Java API 提供的一个用于高精度计算的类。利用 BigDecimal 的 setScale() 方法,我们可以保留指定位数的小数,并设置四舍五入的规则。以下是实现任意精度的四舍五入的示例:

double num = 3.1415926;

BigDecimal bd = new BigDecimal(Double.toString(num)); // 将 double 转换为 BigDecimal
bd = bd.setScale(2, RoundingMode.HALF_UP); // 小数点后保留两位,四舍五入

System.out.println(bd.doubleValue()); // 3.14

代码中,我们首先将 double 类型的变量 num 转换为 BigDecimal,然后设置小数点后保留两位,同时设置四舍五入的取整规则为 RoundingMode.HALF_UP。最后输出结果为 3.14。

使用 NumberFormat 类进行四舍五入

NumberFormat 类是 Java API 提供的一个用于格式化数字的抽象类,可实现国际化格式的数字输出。我们可以通过 NumberFormat 的实例化对象 DecimalFormat,设置同样的 DecimalFormatSymbols 或 DecimalFormatProperties 实现四舍五入操作。以下是使用 NumberFormat 实现四舍五入的示例:

double num = 3.1415926;

NumberFormat nf = NumberFormat.getInstance(); // 实例化 NumberFormat
nf.setMaximumFractionDigits(2); // 小数点后最大保留两位
nf.setMinimumFractionDigits(2); // 小数点后最小保留两位
nf.setRoundingMode(RoundingMode.HALF_UP); // 四舍五入

System.out.println(nf.format(num)); // "3.14"

代码中,我们首先实例化 NumberFormat,然后设置小数点后最大保留两位,最小保留两位,并设置四舍五入的取整规则为 RoundingMode.HALF_UP。最后输出结果为 3.14。

结论

以上是 Java 中四舍五入的四种常用方法。它们各有优缺点,应根据实际需求进行选择。其中,Math.round() 方法最为简便,常用于简单场合;DecimalFormat 类可实现自定义格式化输出,常用于数字格式化;BigDecimal 类可实现高精度计算,常用于财务计算;NumberFormat 类,常用于国际化数字格式输出。