6
我有一个包含“09338.712001”的QString myNumber。当我这样做的时候:QString :: toDouble()给我双精度错误
myNumber.toDouble();
,它返回9338.71,但是我希望double是原始值,即09338.712001。有谁知道如何获得toDouble返回的double与QString具有相同的精度?谢谢。
我有一个包含“09338.712001”的QString myNumber。当我这样做的时候:QString :: toDouble()给我双精度错误
myNumber.toDouble();
,它返回9338.71,但是我希望double是原始值,即09338.712001。有谁知道如何获得toDouble返回的double与QString具有相同的精度?谢谢。
你的问题可能在于你如何输出这些值。
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
我认为这是我的问题。谢谢! – user446836 2012-04-24 15:29:36