Двойная проверка - PullRequest
       25

Двойная проверка

0 голосов
/ 06 апреля 2020

У меня есть свойство json ниже, которое содержит число c значение

 "creditLimit": "844500" 

, которое имеет следующие условия:

  1. Не должно превышать 10 цифр
  2. Должно быть целым числом, не должно содержать десятичных дробей

Ниже приведены примеры допустимых входных данных, для которых я хочу отправить пользователю сообщение об ошибке проверки, сообщив недопустимую запись:

45500.00
9876543210

Пример недопустимых входных данных:

540.50
98765432109

Когда я пытался

 Double.valueOf(ent.creditLimit).intValue() 

, конечное значение изменяется, похоже, оно округляется до значения.

Я не хочу сохранять десятичные дроби.

Как сохранить точное значение? Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Вы можете использовать регулярное выражение для проверки или проанализировать как BigDecimal, а затем использовать intValueExact():

BigDecimal bd = new BigDecimal("540.50");
try
{
    bd.intValueExact();
    //number is a whole number
} catch(ArithmeticException e)
{
    //number is not a whole number
}
1 голос
/ 06 апреля 2020
  1. Убедитесь, что в вашем classpath / runtime есть реализация javax.validation.
  2. В вашем JSON -Pojo, тогда:

    @javax.validation.constraints.Pattern(regexp = "^\\d{1,10}$")
    private String creditLimit;
    

Разрешает только числовые строки длиной от 1 до 10. В противном случае выдает исключение.

...