Дробная часть выражения? Легко!

Источник: http://lurkmore.ru/Индусский_код

Далеко не сразу можно понять, что этот код выделяет дробную часть произведения a*b. кроме того, функция выдаст ошибочное значение при a*b>999999999 или a*b<0. Также зависимость времени выполнения от величины целой части тоже не радует.

double rest(float a, float b) {
    float res=a*b;
    for (int i=0; i<999999999; i++){
        if (i<=res && i+1>res) {
            res = res-i;
            break;
        }
    }
    return res;
}

Комментарии запрещены.