2017-03-05 1 views
0

나는 x와 y 좌표의 데이터 파일을 가지고 있으며 Qt에서 두 개의 이중 벡터로 읽으려고합니다. 내 문제는 내 원래의 값이 내 코드가Qt에서 정밀도를 잃지 않고 텍스트 파일에서 값 읽기

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

입니다

35.659569 139.723370 
35.659546 139.723194 
35.659527 139.723051 
35.659523 139.722909 
35.659383 139.722946 

처럼 내 데이터 파일이 보이는 6까지 이동에도 불구하고, 값이 잘 리거나 3 소수점 이하 자릿수 후 반올림되고 있다는 점이다 정밀도를 잃지 않고 값을 읽을 수있는 방법은 무엇입니까?

+1

. 또한 소수점과 이진수의 차이로 인해 어떤 오류는 피할 수 없습니다. 정확성을 잃지 않도록 문자열로 읽고 저장하십시오. – MikeCAT

+0

당신은 그들이 단절되고 있는지, 아니면 단지 둥근 채로 전시되고 있는지 확신합니까? qDebug(), qInfo()에는 인쇄 방법을 제어하는 ​​서식 지정 플래그가있을 수 있습니다. 중단 점을 넣고'a'와'b'에 대한 스택 내용을 검토하십시오. 나는 당신이 당신의 모든 가치관을 보게 될 것이라고 믿습니다. – Freddy

답변

1

당신은 정밀도를 잃지 않습니다. 문제는 입니다. qSetRealNumberPrecision()

이 줄을 교체 사용 의 정밀도를 설정하십시오 :

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

로 : 그것은 읽기하지만 인쇄 문제없는 것 같다

qInfo() << "a and b after using split is"<< qSetRealNumberPrecision(8) << a <<" "<< b; 
관련 문제