Double数据保留小数点后几位并四舍五入(多种舍入策略)

1、方式一:使用DecimalFormat 方法:

将数字格式化为具有特定小数位数的字符串

DecimalFormat df = new DecimalFormat("0.000");

参数:第一个 0 表示在该位置上必须有一个数字,如果没有数字则显示为0

           . 是小数点

           000 表示小数点后必须有三位数字,如果实际数字不足三位,则会补零

结果:会对数字进行四舍五入。

 public static void main(String[] args) {
        double value = 1.23456789;
        DecimalFormat df = new DecimalFormat("0.000");//保留小数点后3位,四舍五入
        String formatted = df.format(value);
        System.out.println(formatted);//打印  1.235
 }

2、方式二:使用BigDecimal 方法

设置小数位数和舍入模式

double v = bd.setScale(3, RoundingMode.HALF_UP).doubleValue();

3是表示保留三位小数

RoundingMode.HALF_UP:如果要舍入的位数大于或等于5,则向上舍入;否则,向下舍入

类似于四舍五入

doubleValue():转换为double类型  请注意,这一步可能会导致精度损失

    public static void main(String[] args) {
        double value = 1.23456789;
        BigDecimal bd = new BigDecimal(value);
        double v = bd.setScale(3, RoundingMode.HALF_UP).doubleValue();//保留3位小数,四舍五入
        System.out.println(v); //打印  1.235
    }

3、BigDecimal 方法其他舍入模式

RoundingMode 提供了多种舍入策略

舍入模式说明案例
UP向上舍入。如果舍入的数字大于0,则向上舍入到下一个整数;如果为负数,则向下舍入到更小的整数例如: 1.1 舍入到整数为 2-1.1 舍入到整数为 -1
DOWN向下舍入。无论数字的值如何,都会舍去小数部分,直接取整例如: 1.9 舍入到整数为 1-1.9 舍入到整数为 -1
CEILING向上舍入到最接近的整数。如果数字为负,则向更大的方向舍入例如: 1.1 舍入为 2-1.1 舍入为 -1
FLOOR向下舍入到最接近的整数。如果数字为负,则向更小的方向舍入例如: 1.9 舍入为 1-1.9 舍入为 -2
HALF_UP四舍五入。如果舍入的数字大于或等于5,则向上舍入;否则,向下舍入例如: 1.5 舍入为 21.4 舍入为 1
HALF_DOWN五舍六入。如果舍入的数字大于5,则向上舍入;等于5时向下舍入例如: 1.5 舍入为 11.6 舍入为 2
HALF_EVEN银行家舍入法(也称为“偶数舍入”)。如果舍入的数字等于5,则向最近的偶数舍入例如: 1.5 舍入为 22.5 舍入为 23.5 舍入为 4
UNNECESSARY不允许舍入。如果舍入会导致精度损失,将抛出 ArithmeticException 异常例如:如果尝试将 1.234 舍入到两位小数, RoundingMode.UNNECESSARY 将会抛出异常,因为 1.234 不能精确表示为两位小数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值