如何在 C++ 中将包含指数数的 QString 转换为 double?
How to convert QString containing an exponential number to double in C++?
我想在不影响精度的情况下将 QString("3.285072743893E-04")
转换为 double
。
当我使用 QString::toDouble
时,结果是 0.000328507
。
我在某处读到,这只是值如何显示的问题。
这是否意味着,将值转换为 double
、QString::toDouble
实际上保留了其精度,即类型 double
的返回值的精度没有受到损害?更重要的是,如果我们处理数据,我们是否需要担心它的精度?
执行的输出
QString s1 = "3.285072743893E-04";
double num = s1.toDouble(NULL);
QString s2 = QString::number(num, 'g', 20);
std::cout << s2.toUtf8().constData() << std::endl;
我的设置 (Qt 4.7.3) 是:
0.00032850727438929998173
如您所见,除最后一位数字外,所有数字都保持精度。
我想在不影响精度的情况下将 QString("3.285072743893E-04")
转换为 double
。
当我使用 QString::toDouble
时,结果是 0.000328507
。
我在某处读到,这只是值如何显示的问题。
这是否意味着,将值转换为 double
、QString::toDouble
实际上保留了其精度,即类型 double
的返回值的精度没有受到损害?更重要的是,如果我们处理数据,我们是否需要担心它的精度?
执行的输出
QString s1 = "3.285072743893E-04";
double num = s1.toDouble(NULL);
QString s2 = QString::number(num, 'g', 20);
std::cout << s2.toUtf8().constData() << std::endl;
我的设置 (Qt 4.7.3) 是:
0.00032850727438929998173
如您所见,除最后一位数字外,所有数字都保持精度。