首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >json-c:格式化新的双对象类型?

json-c:格式化新的双对象类型?
EN

Stack Overflow用户
提问于 2022-04-18 09:48:36
回答 1查看 148关注 0票数 1

我使用json-c来创建一个json格式的字符串。我有一些浮点值,json-c做了一些转换为double,这会导致一些错误:

代码语言:javascript
复制
float nachtmodusfaktor;
nachtmodusfaktor = 0.8;

json_object_object_add(jsons[8],"nachtmodusfaktor",json_object_new_double(round(nachtmodusfaktor * 10) / 10));

json字符串的结果是:

代码语言:javascript
复制
     "nachtmodusfaktor": 0.80000000000000004,

不管我是否执行循环()调用都不重要。在这两种情况下都存在这些故障。

有没有一种方法可以告诉json-c库使用printf (即"%5.2f")将对象放在定义的格式中,然后使用printf(即"%5.2f")来显示0.80而不是上面的内容?

或者你有个解决办法的主意吗?

谢谢!

/KNEBB

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 09:03:19

这正是函数json_object_new_double_s存在的原因:

来自文档

使用值的确切序列化表示形式,创建一个类型为json_object的新json_type_double。 --这允许以更方便的形式序列化那些否则显示效率不高的数字(例如,12.3 => "12.300000000000001")

json_object_new_double(round(nachtmodusfaktor * 10) / 10);应改为:

代码语言:javascript
复制
   char buffer[8];
   sprintf(buffer, "%f", nachtmodusfaktor);
   json_object_new_double_s(nachtmodusfaktor, buffer);  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71910216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档