我正在使用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版本。有人有解决方案吗?
答案 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);