2017-02-21 8 views
0

У меня проблема с большим десятичным и округлением. У меня есть цена ввода как 35,90 и выход возвращает 35,9Большое десятичное округление

Это, как я делаю свое округление:

BigDecimal scaledResult = rs.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP); 
sc.setPrice(scaledResult); 

который возвращает 35,9 выхода, даже если я установить шкалу до двух знаков после запятой. Есть идеи? Благодаря!

+5

Это не вопрос округление (как 35,9 = = 35.90), это проблема форматирования. – Kayaman

+1

Когда вы говорите, что он возвращает * 35.9, что вы имеете в виду? Вы выводите результат где-нибудь? – jwatkins

+0

Возвращается api на клиентскую сторону как 35.9, хотя в базе данных он хранится как 35.90. – Dayna

ответ

0

Спасибо, ребята за вашу помощь, вот как я ее решил, написав сериалайзер:

public class BigDecimalSerializer extends JsonSerializer<BigDecimal> { 
    @Override 
    public void serialize(BigDecimal value, JsonGenerator jgen, SerializerProvider provider) throws IOException, 
      JsonProcessingException { 
     jgen.writeString(value.setScale(2, BigDecimal.ROUND_HALF_UP).toString()); 
    } 
} 

и поля моей модели:

@JsonSerialize(using = BigDecimalSerializer.class) 
private BigDecimal price; 
Смежные вопросы