В настоящее время я работаю над программой, предназначенной для ввода восьмеричной фракции в качестве входных данных и преобразования ее в десятичную дробь. До сих пор у меня есть часть кода, которая преобразует часть до десятичной точки в десятичную, а не плавающие точки после десятичной точки. Я пытался использовать модуль, но был неудачным из-за того, что моя переменная была плавающей.C++ Преобразование восьмеричной доли в десятичную дроби?
Есть ли способ преобразовать оставшиеся числа после десятичной точки в десятичную с восьмеричного? Я разместил свой код ниже. Любая помощь приветствуется. Благодаря!
int main()
{
float num;
int rem = 0;;
int dec = 0;
int i = 0;
cout << "Please enter a number with a decimal point: ";
cin >> num;
double ohalf = num - (int)num;
int half = num;
while (half != 0)
{
rem = half % 10;
half /= 10; //Converts first have to decimal
dec += rem *= pow(8, i);
i++;
}
cout << dec;
i = -1;
while (ohalf != 0)
{
rem = ohalf *pow(8, i); //Converts second half to decimal. *This is where I am stuck*
i--;
}
cout << rem;
_getch();
return 0;
}
Я думаю, было бы намного легче обрабатывать ввод как 'string', [разделить его на '' .'' char] (http://stackoverflow.com/questions/236129/split-a-string-in-c), используйте 'strtol' в разделенных строках, правильно масштабируйте дробную часть, затем добавьте их в "двойной". –