java中Double保留三位小数

在 Java 中,有多种方法可以将 Double 类型的数据保留到三位小数。以下是几种常见的实现方式:

✅ 方法一:使用 DecimalFormatDecimalFormat 是 Java 中用于格式化数字的一个类。

import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) {
        double number = 123.456789;
        DecimalFormat df = new DecimalFormat("#.###");
        // 设置舍入模式(可选)
        df.setRoundingMode(java.math.RoundingMode.HALF_UP);
        System.out.println(df.format(number));
    }
}

•#.### 表示最多保留三位小数。
•可以通过设置不同的 RoundingMode 来控制舍入行为。

✅ 方法二:使用 String.format()String.format() 方法提供了一种简单的方式来格式化数字。

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

•“%.3f” 表示保留三位小数,并且会进行四舍五入。

✅ 方法三:使用 BigDecimalBigDecimal 提供了更高精度的数值计算,并且允许你精确控制舍入行为。

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        double number = 123.456789;
        BigDecimal bd = new BigDecimal(Double.toString(number));
        bd = bd.setScale(3, RoundingMode.HALF_UP);
        System.out.println(bd.doubleValue());
    }
}

•setScale(3, RoundingMode.HALF_UP) 将 BigDecimal 对象的小数位数设置为 3,并采用“四舍五入”的舍入模式。
•注意这里我们使用 Double.toString(number) 来避免由于 double 类型的精度问题导致的结果不准确。

✅ 方法四:使用 Math.round()虽然 Math.round() 主要用于整数舍入,但你可以结合它来达到保留小数的目的。

public class Main {
    public static void main(String[] args) {
        double number = 123.456789;
        double rounded = Math.round(number * 1000.0) / 1000.0;
        System.out.println(rounded);
    }
}

•这里我们将数字乘以 1000 后取整再除以 1000,从而保留三位小数。
•此方法简单直接,但不如前几种方法灵活,特别是对于舍入模式的选择。

总结
•DecimalFormat 和 String.format() 非常适合快速格式化输出,前者提供了更多的配置选项。
•BigDecimal 更加适用于需要高精度计算的场景,例如金融应用。
•Math.round() 方法较为基础,适合简单的场景。
选择哪种方法取决于你的具体需求,包括是否需要考虑舍入模式、性能要求以及代码的简洁性等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haokan_Jia

你的鼓励就是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值