Как посчитать кол-во цифр дробной части?(написать функцию) Язык: си

Надо посчитать кол-во цифирок после запятой. Есть недоработанный код:

int k(double acc) {
    int count = 0;
    while (acc != 0) {
        acc = acc/10;
        count++;
    }
    return count;
}

Ответы (2 шт):

Автор решения: Zhihar

если я не путаю, то только если дробная часть может быть записана в виде 1/(2^n) можно подсчитать какое-то конечное число цифр дробной части иначе кол-во цифр дробной части будет равно максимальному кол-ву цифр, которые поддерживает дробь (для float это в районе 7, для double - в районе 15)

  • это связано с тем, что числа хранятся в двоичном виде, а перевод конечной дробной части из двоичной в десятичную систему исчисления и наоборот дает бесконечную дробную часть

т.е. какое-то число вида

const float value = 1.3;

на самом деле будет равно 1.29999998

→ Ссылка
Автор решения: Арамис
int count_float_dig(double acc)
{
    int count = 0;
    int integer = (int)acc; //берем целую часть числа
    while (integer != acc) //сравниваем целую часть числа с самим числом
    {
        acc *= 10; //если нужно, то добавляем в целую часть числа новую цифру
        count++;
        integer = (int)acc;
    }
    return count;
}
→ Ссылка