8

I have a QString myNumber containing "09338.712001". When I do:

myNumber.toDouble();, it returns 9338.71, but I want the double to be the original value, which is 09338.712001. Does anyone know how to get the double returned by toDouble to have the same precision as the QString? Thanks.

4

1 に答える 1

19

あなたの問題は、おそらくこれらの値をどのように出力するかにあります。

 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);

結果:

 a:  9338.71  
 b:  9338.71  
 a:  "9338.712001"
 b:  "9.3387120010000e+03"
 c:  "0.333333333333333314829616256247"

とにかく、がこれを読む良い機会かもしれません:すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと

于 2012-04-24T15:04:44.067 に答える