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

Payel Ganguly 2023年1月30日 2020年10月15日
  1. 使用 Math.round(double*100.0)/100.0 将一个双精度数四舍五入到小数点后两位
  2. 使用 BigDecimal 将一个双精度数舍入到两个小数位上
  3. 使用 DecimalFormat 将一个双精度数四舍五入到小数点后两位
  4. 使用 Apache Common Math 将一个双精度数值四舍五入到两位小数
如何在 Java 中把双精度数四舍五入到小数点后两位数

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

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

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

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

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

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

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

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.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;

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.util.*;
import java.lang.*;
import java.io.*;
import java.text.DecimalFormat;

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.util.*;
import java.lang.*;
import java.io.*;
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 应用程序,建议遵循前三种方法。

相关文章 - Java Double