浮点值丢失 :: 使用 rapidjson 读取 JSON
Loss of floating point values :: reading JSON with rapidjson
在项目中,程序读取 JSON 文档(使用快速 json)然后获取该 JSON 文档的一部分并尝试创建新的 JSON价值。以下代码用于
# jsonstring is the JSON string
rapidjson::Document firstJSON = readJsonString(jsonstring);
# val is the Value which is a small part of firstJSON document
rapidjson::Value &val = firstJSON["A"]["B"];
jsonstring是一个follows
{
"A":
{
"B":
{
"e0":0.03974359855055809,
"e1":0.17799679934978486
}
}
"R": "stringval"
}
所以 Val 的值应该是
"B":
{
"e0":0.03974359855055809,
"e1":0.17799679934978486
}
但它给了我这个输出:Val
"B":
{
"e0":0.0,
"e1":0.1
}
很明显,当尝试从文档中读取 json 的一部分并在 rapidjson::Value 中读取它时,它只是采用单个十进制值。
任何人都可以告诉我如何从 rapidjson::Document 读取并使 rapidjson::Value 具有双精度值吗?
已经试过了
- 试图设置精度,但我没有找到为
reading from rapidjson::Document to rapidjson::Value
设置精度的方法
非常感谢!!
将 OP 的评论转换为答案:
The precision was set at 1, that's the reason you are getting this output. So set the precision to 18 and this issue should be solved.
在项目中,程序读取 JSON 文档(使用快速 json)然后获取该 JSON 文档的一部分并尝试创建新的 JSON价值。以下代码用于
# jsonstring is the JSON string
rapidjson::Document firstJSON = readJsonString(jsonstring);
# val is the Value which is a small part of firstJSON document
rapidjson::Value &val = firstJSON["A"]["B"];
jsonstring是一个follows
{
"A":
{
"B":
{
"e0":0.03974359855055809,
"e1":0.17799679934978486
}
}
"R": "stringval"
}
所以 Val 的值应该是
"B":
{
"e0":0.03974359855055809,
"e1":0.17799679934978486
}
但它给了我这个输出:Val
"B":
{
"e0":0.0,
"e1":0.1
}
很明显,当尝试从文档中读取 json 的一部分并在 rapidjson::Value 中读取它时,它只是采用单个十进制值。
任何人都可以告诉我如何从 rapidjson::Document 读取并使 rapidjson::Value 具有双精度值吗?
已经试过了
- 试图设置精度,但我没有找到为
reading from rapidjson::Document to rapidjson::Value
设置精度的方法
非常感谢!!
将 OP 的评论转换为答案:
The precision was set at 1, that's the reason you are getting this output. So set the precision to 18 and this issue should be solved.