传递到前端的数字, 小数点后位数一般要限制在六个以内,否则会导致出现十多位乱七八糟的数字,最近研究了下,经过尝试找到了这种方法,分享给粉丝们
这里以小数点后位数3位为例:
@Bean
public SimpleModule simpleModule(){
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(Number.class, new JsonSerializer<Number>() {
@Override
public void serialize(Number value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
// Class.
if(value==null){
gen.writeNull();
return;
}
// logger.debug("数字{}的类型是{}",value,value.getClass().getTypeName());
String s;
if(value instanceof Float || value instanceof Double|| value instanceof BigDecimal)//#表示没有则为空,0表示如果没有则该位补0.
s=new java.text.DecimalFormat("#.###").format(value);//value=( value).doubleValue()-( value).doubleValue()%0.01;
else
s=String.valueOf(value);
// logger.debug("数值{}格式化为#.###以后的结果是{}", value,s);
gen.writeNumber(s);;
}
});// ToStringSerializer.instance);
return simpleModule;
}