作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Jansson 的 json_dumps 或 json_dumpf() 输出实数时,如何指定小数点后输出固定位数?
我尝试了 Jansson 的新 JSON_REAL_PRECISION 标志,但它指定了最大有效位数,而不是小数点后的固定位数。
基本上,我正在 Jansson 中寻找一些行为类似于以下 C 中 printf 调用的内容(预期输出为 123.12346):
printf("%.5f", 123.123456789);
[编辑]
这里有一些示例代码来说明我迄今为止尝试过的输出样式(需要 Jansson 2.7+):
#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;
}
输出:
Output of json_dumps() for 123.123456789: {"foo": 123.123456789}
Again, but using JSON_REAL_PRECISION(5) : {"foo": 123.12}
同样,我需要一种方法来输出小数点后固定位数(例如123.12346),有人知道如何实现这一点吗?
最佳答案
我意识到这是一个老问题,但我最近试图将 json 数据限制为最多 2 位小数,我最初认为我可以使用 JSON_REAL_PRECISION
来做到这一点,结果才意识到那是行不通的。
这是一个可能对您有用(或者我应该说,可能有效)的解决方案:
#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;
}
关于c - 如何在 Jansson 中指定要输出实数的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274738/
我正在实现谱聚类算法,我必须确保矩阵(拉普拉斯矩阵)是半正定矩阵。 检查矩阵是否为正定矩阵 (PD) 就足够了,因为可以在特征值中看到“半”部分。矩阵非常大(nxn,其中 n 是几千的数量级)所以特征
我是一名优秀的程序员,十分优秀!