java数据格式处理

概述

记录一下常用的数据格式处理。千分位分隔符、四舍五入。

代码

复制代码
/**
 * 数据格式化工具类
 * @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);
    }

}
相关推荐
挖矿大亨3 分钟前
C++中的赋值运算符重载
开发语言·c++·算法
superman超哥6 分钟前
Rust 基本数据类型:类型安全的底层探索
开发语言·rust·rust基本数据类型·rust底层探索·类型安全
Liu-Eleven6 分钟前
Qt/C++开发嵌入式项目日志库选型
开发语言·c++·qt
while(1){yan}9 分钟前
SpringIoc
java·spring boot·spring·java-ee
A242073493013 分钟前
深入浅出JS事件:从基础原理到实战进阶全解析
开发语言·前端·javascript
烧冻鸡翅QAQ21 分钟前
从0开始的游戏编程——开发前的编程语言准备(JAVAScript)
开发语言·javascript·游戏
saber_andlibert25 分钟前
【C++转GO】文件操作+协程和管道
开发语言·c++·golang
Swizard30 分钟前
别再硬编码配置了!5分钟带你用 PyYAML 让 Python 项目“活”起来
python
苏叶新城32 分钟前
SpringBoot 3.5 JPA投影
java·spring boot·后端
Vic1010138 分钟前
Spring AOP 常用注解完全指南
java·后端·spring