3

正如文档所述,我正在尝试从数据库中获取双重类型数据:

auto cursor = db["collection"].find({}, opts);
for (auto&& doc : cursor) {
    std::cout << bsoncxx::to_json(doc) << std::endl;
}

但我想避免将 doc 转换为 json,因为我失去了小数精度。例如:

在数据库中显示:

"lng" : -58.4682568037741

但是在转换为 json 之后,我收到了这个:

"lng" : -58.4682

例如,有什么方法可以将其直接转换为字符串?

4

1 回答 1

4

你可以直接拉出你想要的字段作为替身。要打印高精度输出,您需要在输出流上进行设置。例如

for (auto&& doc : cursor) {
    std::cout << std::setprecision(15)
              << "lng: " << doc["lng"].get_double() << std::endl;
}

给出:

lng: -58.4682568037741

您可能需要doc["lng"]在调用get_double.

于 2016-06-28T03:16:28.810 回答