Потеря значений с плавающей запятой :: чтение JSON с помощью rapidjson

#c #json #rapidjson

#c #json #rapidjson

Вопрос:

В проекте программа считывает документ JSON (используя rapidjson), а затем берет часть этого документа JSON и пытается создать новое значение JSON. Для этого используется следующий код

 # jsonstring is the JSON string
rapidjson::Document firstJSON = readJsonString(jsonstring);
# val is the Value which is a small part of firstJSON document
rapidjson::Value amp;val = firstJSON["A"]["B"];
 

jsonstring — это следующее

 {
    "A":
    {
       "B":
       {
           "e0":0.03974359855055809,
           "e1":0.17799679934978486
       }
    }
    "R": "stringval"
}
 

таким образом, значение Val должно быть

 "B":
{
  "e0":0.03974359855055809,
  "e1":0.17799679934978486
}
 

но это дает мне такой результат: Val

 "B":
{
  "e0":0.0,
  "e1":0.1
}
 

Итак, очевидно, что при попытке прочитать часть json из Document и прочитать его в rapidjson::Value он просто принимает одно десятичное значение.

Может кто-нибудь, пожалуйста, скажите мне, как читать из rapidjson::Document и создавать rapidjson::Value с двойной точностью значений?

Все пытались.

  1. Пытался установить точность, но у меня не было способа установить точность для reading from rapidjson::Document to rapidjson::Value

Большое вам спасибо!!

Комментарии:

1. Как вы получаете этот вывод?

2. @Botje извините, точность была установлена на 1, вот почему я получал этот результат. Итак, установите точность на 18, и проблема решена. Спасибо!

Ответ №1:

Преобразовал комментарий OP в ответ:

Точность была установлена на 1, вот почему вы получаете этот вывод. Поэтому установите точность на 18, и эта проблема должна быть решена.