Qt toDouble()方法强制转换为int

时间:2014-02-10 09:42:42

标签: c++ qt casting double

我有一个问题是施法加倍。我正在将两个字符串转换为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不是十进制..

1 个答案:

答案 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附加信息