QString :: toDouble () gives me double with wrong precision

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

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

+6
source share
1 answer

Probably your problem is how you output these values.

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

result:

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

But in any case, maybe now is a good moment to read this: What every computer scientist needs to know about floating point arithmetic

+12
source

Source: https://habr.com/ru/post/914045/


All Articles