在Qt

时间:2017-03-05 02:54:46

标签: c++ qt

我有一个x和y坐标的数据文件,我试图在Qt中将它们读入两个双向量。我的问题是,在3位小数后,值被切断或舍入,即使我的原始值达到6.我的数据文件看起来像

35.659569 139.723370
35.659546 139.723194
35.659527 139.723051
35.659523 139.722909
35.659383 139.722946

我的代码是

QVector<double> v, v2;
QFile textFile (":/new/files/02262017newdata.txt");
if(textFile.open(QIODevice::ReadOnly))
{
  qInfo() << "opened file successfully";
  double a, b;
  QTextStream textStream (&textFile);
  while (!textStream.atEnd()) {
      QString line = textFile.readLine();
      QStringList list = line.split(" ");
      if(list.size() == 2){
        a = list.at(0).toDouble();
        b = list.at(1).toDouble();
      }
        qInfo() << "a and b after using split is" << a <<" "<< b;
        v.append(a);
        v2.append(b);
   }
}

如何在不丢失精度的情况下读取值?

1 个答案:

答案 0 :(得分:1)

你不会失去精确度。问题出在qInfo()。尝试使用qInfo()

qSetRealNumberPrecision()中设置精确度

替换此行:

qInfo() << "a and b after using split is" << a <<" "<< b;

with:

qInfo() << "a and b after using split is"<< qSetRealNumberPrecision(8) << a <<" "<< b;