bigDecimal 返回前端保留小数点后两位问题解决

bigDecimal保留后两位小数 且 返回前端 不丢失小数点后的0 位数不够补零

例 后端返回 decimal 类型 5.00 到前端 会变成5

import com.fasterxml.jackson.annotation.JsonFormat;

例如
private BigDecimal rentMonth;


解决方法:

第一步:1、加注解:@JsonFormat(shape = JsonFormat.Shape.STRING)

备注:注解可以加在属性上或get方法上

第二步:2、修改get方法返回值

例如:

@JsonFormat(shape = JsonFormat.Shape.STRING)
public BigDecimal getRentMonth() {
   return rentMonth == null ? null : rentMonth.setScale(2, BigDecimal.ROUND_HALF_UP);
}

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

后端 BigDecimal 保留两位小数 不足两位补0   

import java.math.BigDecimal;
import java.text.DecimalFormat;      
public static void main(String[] args) {

    // String s = "6.123456";
    // String s = "6.126";
    String s = "0.126";
    // 四舍五入
    BigDecimal value = new BigDecimal(s).setScale(2, BigDecimal.ROUND_HALF_UP);
    // 不足两位小数补0
    DecimalFormat decimalFormat = new DecimalFormat("0.00#");
    DecimalFormat decimalFormat1 = new DecimalFormat("#0.00");
    DecimalFormat decimalFormat2 = new DecimalFormat("#.00");
    String strVal = decimalFormat.format(value);
    System.out.println(strVal);
    System.out.println(new BigDecimal(strVal));
    System.out.println();

    String strVal1 = decimalFormat1.format(value);
    System.out.println(strVal1);
    System.out.println(new BigDecimal(strVal1));
    System.out.println();

    String strVal2= decimalFormat2.format(value);
    System.out.println(strVal2);
    System.out.println(new BigDecimal(strVal2));
    
}

结果:

 

备注 :
DecimalFormat decimalFormat1 = new DecimalFormat("#.00");

这格式化小数点前为零时,会丢失小数点前的0

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐