Я хотел бы вычислить число ненулевых и не повторяющихся (т.е. 1.999999999) справа от десятичной точки. Например:Определить количество ненулевых цифр справа от десятичной точки
x.xx = 2
x.xxx = 3
x.xxx000 = 3
Я могу сделать это путем преобразования числа в строку, но мне было интересно, если есть более быстрый способ, используя математику. Есть идеи?
Спасибо.
EDIT: Многие люди, похоже, считают, что это безумное поручение из-за того, как номера представлены в компьютерах. Однако позвольте мне объяснить контекст проблемы. Предположим, вы должны написать метод случайного генерации числа с плавающей запятой. Количество, которое вы создаете, должно иметь определенную точность, поэтому вы должны округлять произвольно сгенерированное число до указанной точности. Например, если точность равна 2, ваше случайное число не может быть 0,012, оно должно быть округлено до 0,01. Проблема в том, что вам не предоставляется точность, вместо этого вам предоставляется приращение, которое в вышеупомянутом случае будет 0,01. В случае 0.01 или 0.002 или любого другого такого приращения, которое меньше 1, вы должны найти точность.
Редактировать: Удалено неправильное использование термина значимых цифр.
В каком формате хранится ваш номер? Если это 'float' или' double', и вам нужно определить количество значительных цифр _decimal_, тогда задача бессмысленна, так как двоичные числа с плавающей запятой по определению не имеют значительных десятичных цифр. –
anotherCoder не указывает, в каком формате хранятся числа. Я предполагаю, что это гипотетический вопрос, учитывая слово «интересно», используемое в вопросе. –
Это другое определение «значащих цифр», чем я узнал в колледже. –