Мне нужно использовать очень маленькие двойники для использования в объекте 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)?