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

3699





