为什么 qjsonvalue 到双倍转换会导致数据丢失
Why does qjsonvalue todouble conversion cause data loss?
QJsonValue toDouble() 转换会生成错误的值,导致数据丢失。
QJsonObject obj;
obj.insert("dbl",double(73183493944884961));
double d = obj.value("dbl").toDouble();
qulonglong ul = d;
qulonglong ul2 = 73183493944884961;
qDebug () << ul << ul2;
输出:
73183493944884960 73183493944884961
toDouble() 意味着它返回一个双精度(然后你将其转换为 qulonglong),这本质上是一种精度损失。通过打印出以下内容,您可以轻松解决此问题,而无需将 json 卷入其中:
主.cpp
#include <QDebug>
int main()
{
qulonglong ul2 = double(73183493944884961);
qDebug() << ul2;
return 0;
}
建筑(类似的东西)
g++ -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main.cpp && ./a.out
输出
73183493944884960
相关文章:
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- PyTorch C++将数据转换为张量失败
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 将整数的二进制数据转换为浮点数
- 更改CV_32FC1以CV_64FC1导致不正确的数据转换
- 将JPEG CHAR数据转换为OpenCV垫子
- C++:如何将 32 位数据转换为有符号整数
- 如何将JSON文件中的数据转换为值(double,int ..)
- 如何将 boost::beast 中的序列化数据转换为字符串,以便我可以以 FIFO 方式处理它?
- 将字符串中的二进制数据转换为char
- 如何将提取的字符串数据转换为字符数组
- 如何将XML节点数据转换为QT中的字符串
- Qt:模型/视图框架上的数据转换
- 将Kinect数据转换为OpenCV矩阵
- C - 将UINT8_T*将图像数据转换为双**图像数据
- 数据转换解决方案
- 将点云2数据转换为opencv图像
- 如何将数组中的数据转换为字符串 c++
- C++目录树数据转换为矢量