概述
记录一下常用的数据格式处理。千分位分隔符、四舍五入。
代码
/**
* 数据格式化工具类
* @author **
* @since **
*/
public class DataFormatUtil {
private DataFormatUtil() {
throw new IllegalStateException("工具类不要实例化");
}
public static String format(Double value){
return format(value, 2);
}
public static String format(BigDecimal value){
return format(value, 2);
}
/**
* 千分位分隔符,四舍五入,保留位数
* @param value 数值
* @param scale 保留小数位数
* @return 格式化后的数值
*/
public static String format(BigDecimal value, int scale){
if(value == null){
return "";
}
if(scale < 0){
throw new IllegalArgumentException("保留小数位数不能小于0");
}
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
symbols.setDecimalSeparator('.');
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", symbols);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setMinimumFractionDigits(scale);
decimalFormat.setMaximumFractionDigits(scale);
return decimalFormat.format(value);
}
/**
* 千分位分隔符,四舍五入,保留位数
* @param value 数值
* @param places 保留小数位数
* @return 格式化后的数值
*/
public static String format(Double value, int places) {
if(value == null){
return "";
}
if(places < 0){
throw new IllegalArgumentException("保留小数位数不能小于0");
}
DecimalFormat decimalFormat = new DecimalFormat((places == 0 ? "#,##0" : "#,##0.") + StringUtils.repeat("0", places));
return decimalFormat.format(value);
}
}