使用RapidJSON舍入double类型

时间:2015-10-11 13:39:04

标签: floating-point double rounding rapidjson

我正在使用RapidJSON(https://github.com/miloyip/rapidjson)创建相当大的数组(~5 MB),由于浮点数过于精确,很多空间都是浪费。 E.g。

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

这导致json“{'value':0.33333333333}”,当我只需要一些重要数字时,这非常烦人。

我在这篇文章中找到了一个解决方案Set floating point precision using rapidjson,但它已经有几年历史了,并且已经过时了最新的rapidjson版本。有人有解决方案吗?

2 个答案:

答案 0 :(得分:2)

当前Writer总是生成浮点数的准确字符串表示,因为解析输出可以恢复原始值。

您可以尝试this上的解决方法。如果您想请求在RapidJSON中提供此功能,请在那里发表评论,我们可以进一步讨论。

答案 1 :(得分:2)

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

writer.SetMaxDecimalPlaces(3);
writer.Double(1.0/3.0);