Strange behaviour with double numbers



  • Hi All,

    For some reason the QString::toDouble method does not return the right double value of a string. So I decided to write my own toDouble method.. I am trying to get a double number with a 17 digit precision.

    When I run my code, the behaviour is different when I have a qDebug() statement in between.

    I am posting the code below

    ...
    int precision = 0;
    int factor_max = 17;
    if (num != (int) num) {
    int factor = 1;
    bool done = false;
    double curnum = num;
    while (!done) {
    curnum = curnum * 10;
    if (curnum == (int)curnum) {
    qDebug() << "Loop curnum value " << curnum << endl;
    precision = factor;
    done = true;
    }
    else {
    qDebug() << "Loop curnum value " << curnum << endl;
    factor++;
    if (factor == factor_max) {
    precision = factor_max;
    done = true;
    }
    }
    }
    }
    ...

    If I uncomment the qDebug statements, then the code yields correct results if not I get incorrect results..

    I tested it with the following

    "-46.2" returns as -46.2 with the qDebug statements in place

    and comes out as 46.20000000000000284 if I comment the qDebug statements out.. I am puzzled about this.. Does anyone have any idea?

    Thanks in advance for your time,





  • Thanks! Alexander


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.