E
E
Evgeny Proff2016-11-05 21:10:12
Programming
Evgeny Proff, 2016-11-05 21:10:12

How to count the number of decimal places in a float?

It is clear that this is not about 1.3(3). And about ordinary floats like: 4.637; should push the value 3 into the variable, for example, L, because 3 decimal places in the input number. Tell me the algorithm, preferably without scanf (if not, then you can with it) in c ++.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Rsa97, 2016-11-05
@EvgenyProff

Тут основная проблема в том, что для компьютера, при использовании чисел одинарной точности, 4.63710 = 100.1010001100010010011012 = 4.636999607110, то есть точно посчитать количество десятичных знаков после запятой невозможно. Приблизительно можно считать беря дробную часть числа. Если эта часть близка к нулю (r < epsilon) или к единице (1-r < epsilon), то, с какой-то вероятностью можно сказать, что мы посчитали длину дробной части. Если нет - то умножаем дробную часть на 10, увеличиваем счётчик и проверяем сначала.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question