Числа выбираются после цифры 6, но я хочу, чтобы все числа - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь получить числа с плавающей запятой, используя метод с уверенностью, но он выбирает только 6 цифр после десятичного числа, но у меня больше, чем 10.

Я пытался получить его, используя код, который яниже показано, что getFLoat - это метод из библиотеки Rest Assured

JsonPath js= ReusableMethods.rawToJson(res);
float latitude = js.getFloat("map.lat");
float longitude = js.getFloat("map.long");

Это возвращает мне значение float как широта = -80.375786 и долгота = 157.40535, где, как и в ответе, это "lat": -80.375787552675078и "длинный": 157,40535607561472

1 Ответ

2 голосов
/ 18 октября 2019

В Java с плавающей точкой можно хранить значение до 6-7 цифр после десятичной дроби. Если вам нужно больше, вы должны иметь возможность использовать double, который допускает 15-16 цифр.

При этом похоже, что ваш код может потребовать дальнейших изменений для работы по мере необходимости. Мне удалось заставить фрагмент кода работать локально, изменив пару вещей:

  • Настройка конфигурации JsonPath для возврата чисел типа Double .
  • Использование метода JsonPath getDouble () для "map.lat" и "map.long".

    JsonPath js = ReusableMethods.rawToJson(res);
    JsonPath.config = new JsonPathConfig(JsonPathConfig.NumberReturnType.DOUBLE);
    double latitude = js.getDouble("map.lat");
    double longitude = js.getDouble("map.long");
    

После этого я смогчтобы получить 14 цифр точности для предоставленных вами десятичных значений.

Если вам нужна дополнительная точность, вы можете установить значение конфигурации в JsonPathConfig.NumberReturnType.BIG_DECIMAL и вызвать js. get ("map.lat") для возврата объекта BigDecimal. Это даст вам лучшую точность, но может оказаться за рамками вашей потребности.

Надеюсь, это сработает для вас!

...