QString :: toDouble()给了我双精度错误

use*_*836 7 precision double qstring qt

我有一个包含"09338.712001"的QString myNumber.当我做:

myNumber.toDouble();,它返回9338.71,但我希望double是原始值,即09338.712001.有谁知道如何让toDouble返回的double与QString具有相同的精度?谢谢.

dsc*_*ulz 16

您的问题可能在于如何输出这些值.

 QString s("9338.712001");
 bool ok = false;

 double a = 9338.712001;
 double b = s.toDouble(&ok);
 double c = 1/3.0;

 qDebug() << "a: " << a;
 qdebug() << "b: " << b;

 qDebug() << "a: " << QString("%1").arg(a, 0, 'g', 13) 
 qDebug() << "b: " << QString("%1").arg(b, 0, 'e', 13);

 qDebug() << "c: " << QString("%1").arg(c, 0, 'g', 30);
Run Code Online (Sandbox Code Playgroud)

结果:

 a:  9338.71  
 b:  9338.71  
 a:  "9338.712001"
 b:  "9.3387120010000e+03"
 c:  "0.333333333333333314829616256247"
Run Code Online (Sandbox Code Playgroud)

但无论如何,也许现在这是一个很好的时刻来阅读这个:每个计算机科学家应该知道浮点运算