C语言 CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number) number怎么保存两位小数
时间: 2024-10-12 15:05:30 浏览: 32
当你使用 `cJSON_AddNumberToObject` 函数将一个双精度浮点数 (`double`) 添加到 JSON 对象时,它通常会将数字转换为字符串形式直接存储,而不是保留所有的小数位。如果你需要精确地控制保留两位小数,你需要先手动将 `number` 转换为字符串,然后添加到对象。
你可以这样做:
```c
#include "cjson.h"
#include <stdio.h>
#include <string.h>
// 函数示例:保留两位小数并添加到 JSON 对象
void add_number_with_two_decimal_places(cJSON *object, const char *name, double number) {
char str[50]; // 预留足够的空间存小数点后的两位
sprintf(str, "%lf", number);
if (strlen(str) > sizeof(str)) { // 防止溢出
printf("无法保留两位小数,已溢出.\n");
return;
}
str[strlen(str)-1] = '\0'; // 结束字符串,去掉多余的 .0
cJSON* num_obj = cJSON_CreateString(str); // 创建新的 JSON 字符串节点
cJSON_AddItemToObject(object, name, num_obj); // 将字符串加入到目标对象中
}
// 使用示例
int main() {
cJSON *root = cJSON_CreateObject();
add_number_with_two_decimal_places(root, "myNumber", 3.14159265);
// ... 其他操作
return 0;
}
```
在这个例子中,`str` 存储了保留两位小数的结果。如果原始数值超过两位小数,函数会打印错误信息,并终止处理。
阅读全文