dimanche 17 décembre 2017

Incorrect addition in a Function

I am writing a function in C++ to convert a number from some base to decimal. It works fine when the number of digits is even, but when it is odd it gives wrong answer.

For example:

Number to convert : 100 
Base to convert to: 10
Correct answer    : 100
Function's output : 99

Here is the code:

unsigned long long convertToDecimal(const std::string& number, const unsigned base)
{
       std::string characters = "0123456789abcdef";
       unsigned long long res = 0;

       for(int i = 0, len = number.size(); i<len; ++i)
       {
           res += characters.find(number.at(i))*std::pow(base, len-1-i);
       }
       return res;
}

Aucun commentaire:

Enregistrer un commentaire