DecimalFormat格式化 # 和 0 的区别

以"#"补位

  • 整数部分多了:不会截断,但是排在有效位最前面的0会被删除
  • 整数部分少了:不作处理
  • 小数部分多了:截断,建议指定RoundingMode,默认为RoundingMode.HALF_EVEN
  • 小数部分少了:不作处理

以"0"补位

  • 整数部分多了:不会截断,排在有效位前面的0也不会被删除
  • 整数部分少了:补0
  • 小数部分多了:截断,建议指定RoundingMode,默认为RoundingMode.HALF_EVEN
  • 小数部分少了:补0

代码

    private static final DecimalFormat decimalFormat;

    static {
        decimalFormat = new DecimalFormat();
        decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    }

    private String format(String pattern, BigDecimal decimal) {
        decimalFormat.applyPattern(pattern);
        return decimalFormat.format(decimal);
    }

测试

    @Test
    public void testDecimalFormat() {
        System.out.println(format("####.##", new BigDecimal("0012.00")));// 12
        System.out.println(format("0000.00", new BigDecimal("0012.00")));// 0012.00
        System.out.println(format("#00.00", new BigDecimal("0012.00")));// 12.00
        System.out.println(format("000.00", new BigDecimal("0012.00")));// 012.00
        System.out.println(format("#.00", new BigDecimal("0012.00")));// 12.00
        System.out.println(format("0.00", new BigDecimal("0012.00")));// 12.00
 	}

总结

  • 设置格式化时默认的RoundingMode
  • 格式化时指定pattern
  • 整数+两位小数pattern: “#.00”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值