Вопрос программистам. С++. Преобразование типов. Ошибка в коде.
Функция получает произвольное число. Нужно разбить его на числитель, знаменатель и целую часть. Почему-то все время выполняется только первое условие. Не понимаю, почему.
Fraction:: Fraction (double real) // convert real num to a fraction
{
double frac;//fractional part
int k=0; // counter
integer = floor(real);
frac = real - integer;
if (frac == 0) // real = 25
{
numerator = 0;
denominator = 1;
}
if((frac !=0) && (frac*10 - floor(frac*10))== 0)
{
numerator = frac * 10;
denominator = 10;
}
else
{
while(((frac*10) - floor(frac)) < 1 && ((frac*10) - floor(frac)) != 0)
frac *= 10;
k++;
}
numerator = (int)frac;
denominator = pow(10.0,k);
}
}