Как посчитать кол-во цифр дробной части?(написать функцию) Язык: си
Надо посчитать кол-во цифирок после запятой. Есть недоработанный код:
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;
}