以"#"补位
- 整数部分多了:不会截断,但是排在有效位最前面的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”