Количество десятичных дробей в json-c / json.h - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно использовать очень маленькие двойники для использования в объекте JSON.Вывод массива выглядит примерно так:

{"array":[[1,0.050000],[2,0.030000]...]}

Код, который я использую:

json_object *jobj = json_object_new_object();
json_object *jarray1 = json_object_new_array();
json_object *jarray2 = json_object_new_array();
...
// in a for loop:
    json_object *int0 = json_object_new_int (integer_num);
    json_object *db0 = json_object_new_double (double_num);
    json_object_array_add(jarray1, int0);
    json_object_array_add(jarray1, db0);
    json_object_array_add(jarray2, jarray1);
...
json_object_object_add(jobj,"array", jarray2);

Это прекрасно работает с числами, показанными выше.Проблема в том, что когда числа меньше, например, 1.6E-10, вывод будет:

{"array":[[1,0.000000],[2,0.000000]...]}

То же самое, что отправка '0', и это нежелательно.Я попытался преобразовать двойное в текст как:

sprintf(str,"%.15f", double_num);
db0 = json_object_new_string(str);

Но тогда вывод:

{"array":[[1,"0.000000000093575"],[2,"0.000000000091282"]...]}

, и мне нужно удалить эти кавычки.Есть ли другой способ увеличить число десятичных знаков в выходном массиве или использовать научную запись (1.6E-10)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...