Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何为Jansson中的实数指定要输出的位数_C_Json - Fatal编程技术网

C 如何为Jansson中的实数指定要输出的位数

C 如何为Jansson中的实数指定要输出的位数,c,json,C,Json,在使用Jansson的json_dumps或json_dumpf()输出实数时,如何指定小数点后输出的固定位数 我尝试了Jansson新的JSON_REAL_PRECISION标志,但它指定了有效位数的最大值,而不是小数点后的固定位数 基本上,我在Jansson中寻找类似于C中对printf的以下调用的东西(预期输出为123.12346): [编辑] 下面是一些示例代码,以说明我迄今为止尝试的输出样式(需要Jansson 2.7+): 同样,我需要一种在小数点后输出固定数字的方法(例如,123.

在使用Jansson的json_dumps或json_dumpf()输出实数时,如何指定小数点后输出的固定位数

我尝试了Jansson新的JSON_REAL_PRECISION标志,但它指定了有效位数的最大值,而不是小数点后的固定位数

基本上,我在Jansson中寻找类似于C中对printf的以下调用的东西(预期输出为123.12346):

[编辑]

下面是一些示例代码,以说明我迄今为止尝试的输出样式(需要Jansson 2.7+):


同样,我需要一种在小数点后输出固定数字的方法(例如,123.12346),任何人都知道如何实现这一点吗?

我意识到这是一个老问题,但我最近试图将json数据限制在最多两位小数点,我最初认为我可以使用
json\u REAL\u PRECISION
来实现这一点,才意识到这是行不通的

这里有一个可能对您有效(或者我应该说,可能已经有效)的解决方案:

#包括
#包括
#包括
int main(int argc,char*argv[])
{
json_t*json=json_object();
json_object_set_new(json,“foo”,json_real(round(100000*123.123456789)/100000));
printf(“123.123456789的json_转储的输出:%s\n”,json_转储(json,0));
printf(“同样,但使用JSON_REAL_PRECISION(5):%s\n”,JSON_转储(JSON,JSON_REAL_PRECISION(5));
返回0;
}

将其存储为字符串?@KarolyHorvath-聪明,但在我的例子中,json对象将在外部使用,这可能会导致混淆。如果只供内部使用,我会采纳你的建议。
printf("%.5f", 123.123456789);
#include <stdio.h>
#include <jansson.h>

int main(int argc, char* argv[])
{
  json_t *json = json_object();

  json_object_set_new(json, "foo", json_real(123.123456789));
  printf("Output of json_dumps() for 123.123456789: %s\n", json_dumps(json, 0));
  printf("Again, but using JSON_REAL_PRECISION(5) : %s\n", json_dumps(json, JSON_REAL_PRECISION(5)));

  return 0;
}
#include <stdio.h>
#include <jansson.h>
#include <math.h>

int main(int argc, char* argv[])
{
  json_t *json = json_object();

  json_object_set_new(json, "foo", json_real(round(100000 * 123.123456789) / 100000));
  printf("Output of json_dumps() for 123.123456789: %s\n", json_dumps(json, 0));
  printf("Again, but using JSON_REAL_PRECISION(5) : %s\n", json_dumps(json, JSON_REAL_PRECISION(5)));

  return 0;
}