Java 保留2位小数点(2种方式)

本文介绍了使用Java中的BigDecimal类和DecimalFormat类处理小数点的方法。通过具体示例展示了如何保留特定位数的小数,并解释了HALF_UP和HALF_DOWN舍入模式的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天群里有人在处理小数点方面出了点问题,趁机回顾下保留小数点的方式,这里介绍2种,利用BigDecimal类及DecimalFormat类。

package com.huayu.java91up;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * Create by zxb on 2017/4/17
 */
public class Test {

    public static void main(String[] args) {
        System.out.println("use bigdecimal...");
        BigDecimal num1 = new BigDecimal("11.015").setScale(2, BigDecimal.ROUND_HALF_UP);
        BigDecimal num2 = new BigDecimal("11.004").setScale(2, BigDecimal.ROUND_HALF_UP);
        BigDecimal num3 = new BigDecimal("11.006").setScale(2, BigDecimal.ROUND_HALF_UP);
        BigDecimal num4 = new BigDecimal("11.1").setScale(2, BigDecimal.ROUND_HALF_UP);
        System.out.println(num1);  // 11.02
        System.out.println(num2);  // 11.00
        System.out.println(num3);  // 11.01
        System.out.println(num4);  // 11.10
        System.out.println("use formatter...");
        DecimalFormat df = new DecimalFormat("0.00");
        System.out.println(df.format(new Double("11.015")));
        System.out.println(df.format(new Double("11.004")));
        System.out.println(df.format(new Double("11.006")));
        System.out.println(df.format(new Double("11.1")));
    }
}
执行结果:



同时,关于HALFDOWNHALFUP的区别,看下API注释





从上面对比得知,两者的区别就是在处理小数点为5的情况不同。HALFUP会向上进位,HALFDOWN是向下保留。

补充一点:DecimalFormat中,#表示没有则为空,0表示如果没有则该位补0,比如0.07,用#.00,就会是".07",用0.00,会是"0.07"。


BigDecimal.ROUND_FLOOR 下层,总是往值小了取

BigDecimal.ROUND_CEILING 上浮,总是往值大了取

BigDecimal.ROUND_UP、BigDecimal.ROUND_DOWN 不区分大小写的总往上或者总往下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值