4

我正在使用 RapidJSON ( https://github.com/miloyip/rapidjson ) 创建相当大的数组 (~ 5 MB) 并且由于浮点数太准确而浪费了大量空间。例如

StringBuffer s;
Writer<StringBuffer> writer(s);
writer.StartObject();
writer.String("value");
writer.Double(1.0/3.0);
writer.EndObject();

这会产生一个 json "{'value': 0.33333333333}" 当我只需要几个有效数字时这很烦人。

我在这篇文章中找到了使用 rapidjson 设置浮点精度的解决方案,但它已经有几年历史了,并且在最新的 rapidjson 版本中已经过时。有没有人对此有解决方案?

4

2 回答 2

3

使用 rapidjson::Writer::SetMaxDecimalPlaces http://rapidjson.org/classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634

writer.SetMaxDecimalPlaces(3);
writer.Double(1.0/3.0);
于 2016-05-20T16:02:04.497 回答
3

目前Writer总是生成浮点数的准确字符串表示,从某种意义上说解析输出可以恢复原始值。

您可以尝试解决此问题。如果您想请求在 RapidJSON 中提供此内容,请在此处发表评论,我们可以进一步讨论。

于 2015-10-15T10:05:59.097 回答