📜  如何将 Double 舍入为 2 位小数 (1)

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

如何将 Double 舍入为 2 位小数

在开发中,有时我们需要将 Double 类型的数据保留固定位小数,例如保留 2 位小数。下面介绍两种常见的方法。

方法一: DecimalFormat

可以使用 DecimalFormat 类来将 Double 类型的数据舍入为指定位数的小数。先定义一个 DecimalFormat 对象,指定格式化模式,再使用 format 方法对数据进行格式化。

double d = 3.141592653589793;
DecimalFormat df = new DecimalFormat("#.00");
double result = Double.valueOf(df.format(d));
System.out.println(result); // 输出 3.14

注意,如果不指定格式化模式,会出现四舍五入的情况:

double d = 3.145;
DecimalFormat df = new DecimalFormat();
double result = Double.valueOf(df.format(d));
System.out.println(result); // 输出 3.15
方法二: BigDecimal

使用 BigDecimal 可以更精确地处理浮点数,避免出现精度问题。可以使用 setScale 方法设置小数位数,使用 ROUND_HALF_UP 模式进行四舍五入。

double d = 3.141592653589793;
BigDecimal bd = new BigDecimal(d);
double result = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(result); // 输出 3.14

需要注意,如果不使用 ROUND_HALF_UP 模式,会出现不符合预期的结果:

double d = 3.145;
BigDecimal bd = new BigDecimal(d);
double result = bd.setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue();
System.out.println(result); // 输出 3.14

以上就是将 Double 舍入为 2 位小数的两种常见方法,具体使用需要根据实际情况选择。