gpt4 book ai didi

c++ - 为什么qjsonvalue todouble转换会导致数据丢失?

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:20 24 4
gpt4 key购买 nike

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() 意味着它返回一个 double (然后你将其转换为 qulonglong),这本质上是一个精度损失。您可以通过打印出来轻松解决这个问题,而无需涉及 json:

main.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

关于c++ - 为什么qjsonvalue todouble转换会导致数据丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207264/

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