Quantcast
Channel: CodeGuru Forums - Visual C++ Programming
Viewing all articles
Browse latest Browse all 3046

Round off or trucate double to two decimal places

$
0
0
Hello,

I have an issue with the converting the user input from the xml to two decimal places.

The user can input any number from the xml. But i need to consider the value only if it is double .

Lets say, I have valid range for the double number as { 6.22, 3.44, 7.8, 0, 1, 2}

My question is if the user enters 6.215 => should i round off the input to 6.22 Or should i ignore the value as not valid.

I have googled about the issues in the floating point rounding off and representation issues.

I have written sample program as follows
Code:

double precision(double f, int places)
{
    double n = std::pow(10.0f, places);
    return std::round(f * n) / n;
}

bool isNumeric(const std::string& str, double &d) {
        try {
                size_t sz(0);
                d = std::stod(str, &sz);
                return sz == str.size();
        }
        catch (const std::invalid_argument&) {
                // if no conversion could be performed.
                return false;
        }
        catch (const std::out_of_range&) {
                //  if the converted value would fall out of the range of the result type.
                return false;
        }
}

int main()
{

    double value(6.55);
    value = precision(value, 2);
}

The issue with the precision function is if i give 6.55 => rounded off number after the precision is not 6.55 but "6.5499999999999998" which is not what i expected !!!

Could the experts throw some useful inputs please ?

Thankyou very much
pdk

Viewing all articles
Browse latest Browse all 3046

Trending Articles