2012-04-24 21 views
6

के साथ दोगुना दे रहा है मेरे पास एक QString myNumber है जिसमें "09338.712001" है। जब मैं करता हूं:क्यूस्ट्रिंग :: टू डबल() मुझे गलत परिशुद्धता

myNumber.toDouble();, यह 9338.71 देता है, लेकिन मैं चाहता हूं कि डबल मूल मूल्य हो, जो 09338.712001 है। क्या किसी को पता है कि क्यूस्ट्रिंग के समान सटीकता के लिए डबल को दो बार कैसे प्राप्त किया जाए? धन्यवाद।

उत्तर

12

आपकी समस्या शायद इन मानों को आउटपुट करने में है।

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" 

लेकिन वैसे भी, हो सकता है अब यह इस पढ़ने के लिए एक अच्छा क्षण है: What Every Computer Scientist Should Know About Floating-Point Arithmetic

+0

मुझे लगता है कि मेरी समस्या थी। धन्यवाद! – user446836

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^