JSON中一位小数输出 保留确定精度小数 小数点后位数

前言

        在使用cJSON的时候,使用cJSON_CreateNumber创建小数obj后,再添加到array或者其他obj中,然后使用cJSON_Print输出的时候,发现小数点后的小数多了很多,完全不是添加的时候保留的精度,搜索网上解决说换成最新的就可以,但是最新下载后结果还是一样,最终使用了json-c解决了。

解决

需求:实现保留一位小数创建obj,最终输出为string的时候也是一位。

实现:

double fdata = 25.12001;
//单纯数字json,例如:25.12001
json_object *data_obj = json_object_new_double(fdata);
//"%.1f"格式化,保存一位小数,例如:25.1
json_object_set_serializer(data_obj, json_object_double_to_json_string, "%.1f", NULL);
//可以直接输出查看,也可以添加到其他obj中
const char *str = json_object_to_json_string_ext(data_obj, JSON_C_TO_STRING_PRETTY);
//最终结果是保留一位小数
printf("%s", str);

上述中最关键的是使用json_object_set_serializer确定了输出的小数的精度。其中"%.1f"就是保存一位小数,同理"%.2f"可以保存两位小数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值