我有一个问题是施法加倍。我正在将两个字符串转换为double,一个是良好的转换,另一个是转换为int,但这是相同的代码..
QTextStream lecture(&file);
ligne = lecture.readLine();
double x = ligne.split(" ")[0].toDouble();
double y = ligne.split(" ")[1].toDouble();
std::cout << " x en string = " <<ligne.split(" ")[0].toStdString() << "; y en string = " << ligne.split(" ")[1].toStdString() << std::endl;
std::cout << " x = " << x << "; y = " << y << std::endl;
这是结果
x en string = 988284.9; y en string = 6429241.49999999
x = 988285; y = 6.4496e+06
如果看到结果,则x不是十进制..
答案 0 :(得分:4)
x实际上是正确的值。
您的问题实际上就在这里:
std::cout << " x = " << x ;
因为您的默认精度为6位数,这不足以代表“.9”。它应该是这样的:
std::cout << " x = " << std::setprecision(8) << x
输出更好的值:
x = 988284.9; y = 6429241.5
注意:您需要
#include <iomanip>
请参阅有关setprecision()(和其他流操纵器)的http://en.cppreference.com/w/cpp/io/manip/setprecision附加信息