HOWTO · Java

如何在 Java 中把双精度数四舍五入到小数点后两位数

本教程介绍了如何在 Java 中用四种不同的方法将双精度数四舍五入到小数点后两位。

本页内容

在上一篇教程文章中,我们已经通过详细的实例了解了如何在 Java 中使用各种方法将 Array 转换为 ArrayList。我们将通过不同形式的场景分析来了解更多类型的 Java 使用方法。

在这篇教程文章中,我们将讨论使用 Java 将一个双精度数四舍五入到小数点后两位的方法。有四种方法可以将一个双精度数四舍五入到小数点后两位,如 Math.round()、BigDecimal 使用 setScale() 方法、DecimalFormat 和 Apache Common 库。

我们通过实例来讨论每种方式。

使用 Math.round(double*100.0)/100.0 将一个双精度数四舍五入到小数点后两位

在 Java 中,Math.round() 方法用于将一个给定的数字四舍五入到其最近的整数。由于在本文中,我们将学习将一个双精度数四舍五入到小数点后两位,所以 Math.round() 的应用将包括 (double*100.0)/100.0。

让我们按照下面的例子进行操作。

import java.io.*;
import java.lang.*;
import java.util.*;

public class Main {
  public static void main(String[] args) {
    double d = 7435.9876;
    double roundDbl = Math.round(d * 100.0) / 100.0;
    System.out.println("Rounded Double value: " + roundDbl);
  }
}

输出:

Rounded Double value: 7435.99

使用 BigDecimal 将一个双精度数舍入到两个小数位上

这样,我们可以先将双精度数转换为 BigDecimal,然后使用 setScale() 方法将转换后的 BigDecimal 四舍五入到两位小数。让我们来理解下面的例子。

import java.io.*;
import java.lang.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;

public class Main {
  public static void main(String[] args) {
    double val1 = 4312.186462;
    System.out.println("Double value: " + val1);

    BigDecimal bd = new BigDecimal(val1).setScale(2, RoundingMode.HALF_UP);
    double val2 = bd.doubleValue();
    System.out.println("Rounded Double value: " + val2);
  }
}

输出:

Double value: 4312.186462
Rounded Double value: 4312.19

使用 DecimalFormat 将一个双精度数四舍五入到小数点后两位

我们也可以使用 DecimalFormat 将双精度数值四舍五入到小数点后两位。让我们在下面的例子中进行讨论。

import java.io.*;
import java.lang.*;
import java.text.DecimalFormat;
import java.util.*;

public class Main {
  public static void main(String[] args) {
    double val1 = 6482.236789;
    System.out.println("Double value: " + val1);

    DecimalFormat df = new DecimalFormat("###.##");
    System.out.println("Rounded Double value (DecimalFormat): " + df.format(val1));
  }
}

输出:

Double value: 6482.236789
Rounded Double value: 6482.24

使用 Apache Common Math 将一个双精度数值四舍五入到两位小数

在 Java 中,有一种特殊的数学库用来将双精度数四舍五入到小数点后两位,它就是 Apache Common。让我们在下面的例子中讨论它的使用。

我们需要在 Java 项目中的 xml 文件中添加这个库的依赖关系。

<dependency>
    <groudId>org.apache.commons</groudId>
    <artifactId>commons-math3</artifactId> 
    <version>3.6.1</version>
</dependency>

现在,让我们检查一下 Apache 库对将双精度数四舍五入到小数点后两位的实现。

import java.io.*;
import java.lang.*;
import java.util.*;
import org.apache.commons.math3.util.Precision;

public class Main {
  public static void main(String[] args) {
    double input = 9476.2351;
    double roundedDbl = Precision.round(input, 2);
    System.out.println("Rounded Double value: " + roundedDbl);
  }
}

输出:

Rounded Double value: 9476.24

对于简单的 Java 应用程序,建议遵循前三种方法。