В настоящее время я работаю над программой, которая предназначена для ввода восьмеричной дроби и преобразования ее в десятичную дробь. Пока что у меня есть часть кода, которая преобразует часть до десятичной точки в десятичную, а не с плавающей запятой после десятичной точки. Я пытался использовать модуль, но безуспешно, потому что моя переменная была с плавающей запятой.
Есть ли способ преобразовать оставшиеся числа после запятой в десятичную из восьмеричной? Я разместил свой код ниже. Любая помощь приветствуется. Спасибо!
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
, разделить его на символ'.'
, используйтеstrtol
для разделенных строк, правильно масштабируйте дробную часть, затем добавьте их вdouble
. - person Andrew Henle   schedule 10.10.2016