gpt4 book ai didi

c++ - C++ 中的 Json : Parse a number as a string to avoid floating-point inaccuracy

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:54 25 4
gpt4 key购买 nike

我正在处理加密货币 RPC 并按如下方式接收 json 数据:

{
...
"amount": 1.34000000,
"confirmations": 230016,
"spendable": true,
"solvable": true
...
}

使用 Jsoncpp图书馆或 json11获取解析为 double 的数字。发生这种情况时,由于 double 问题,结果为:1.3400000000000001。一般来说,这对金融交易来说是灾难性的,是 Not Acceptable 。

我已经有了一个定点库,它可以接受一个有效的字符串并在内部将其视为一个整数。有没有一种方法可以使 Jsoncpp(或任何其他 json 库)将选定的数字 json 值作为字符串,以便我可以以固定精度以正确的方式处理它们?

最佳答案

json库里好像没有解决办法,只好自己修改数字,用引号包起来。我将此功能应用于响应。

[](std::string& jsonStr) {
// matches "amount" field in json
static std::regex reg(R"((\s*\"amount\"\s*:)\s*(\d*\.{0,1}\d{0,8})\s*)");
jsonStr = std::regex_replace(jsonStr, reg, "$1\"$2\"");
};

现在它可以正常工作了。

关于c++ - C++ 中的 Json : Parse a number as a string to avoid floating-point inaccuracy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com