我使用json-c来创建一个json格式的字符串。我有一些浮点值,json-c做了一些转换为double,这会导致一些错误:
float nachtmodusfaktor;
nachtmodusfaktor = 0.8;
json_object_object_add(jsons[8],"nachtmodusfaktor",json_object_new_double(round(nachtmodusfaktor * 10) / 10));json字符串的结果是:
"nachtmodusfaktor": 0.80000000000000004,不管我是否执行循环()调用都不重要。在这两种情况下都存在这些故障。
有没有一种方法可以告诉json-c库使用printf (即"%5.2f")将对象放在定义的格式中,然后使用printf(即"%5.2f")来显示0.80而不是上面的内容?
或者你有个解决办法的主意吗?
谢谢!
/KNEBB
发布于 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);应改为:
char buffer[8];
sprintf(buffer, "%f", nachtmodusfaktor);
json_object_new_double_s(nachtmodusfaktor, buffer); https://stackoverflow.com/questions/71910216
复制相似问题