Как посчитать символы после точки и до единицы?

Доброго времени суток. Как посчитать кол-во символов после точки?
У меня есть значение переменной 0.00010000 - для этого значения, после точки и до единицы следует 4 символа (Включая 1)
В этом случае 0.00100000 - уже 3 символа после точки и до единицы.
Подскажите, как я могу это считать с помощью PHP, так и не понял.
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Самый тупой вариант: strpos($num, '1')-2;
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Zoominger
@Zoominger
System Integrator
Вариант 1: Преобразовать в строку, циклом дойти до первой единицы;
Вариант 2: Умножать на 10, пока не будет равно 1 (ответ: кол-во циклов).
Ответ написан
Комментировать
@tmstork
$count=strlen(strstr(strval($n),'.'))-1;
или так
$count=strlen(strstr($n,'.'))-1;
Ответ написан
Комментировать
@rPman
Задача - подсчет значимы цифр после десятичной запятой в строковм представлении.
Интересно, у меня впереди маячит решение этой маленькой задачи, но только максимально эффективно на c++ ибо данных много.

Пока решение на основе работы со строкой:
* убираешь все что не цифры и не точка
* проверяешь наличие точки (число может быть целым), если нет - ответ 0
* если есть точка, начинаешь считать нули с конца, как только обнаружишь не ноль
* продолжаешь двигаться справа на лево до символа точки, считая уже в другую переменную, возвращаешь эту переменную

p.s. осторожно, данный алгоритм на php может оказаться медленнее других, менее адекватных с первого взгляда.

Например, в цикле делишь на pow(10,x) берешь intval и снова умножаешь на этот же pow, начиная с максимально большого значения x (для double это где то 15, для криптовалютных бирж тебе скорее всего нужно 8 или 9) и уменьшаешь его до тех пор, пока полученное значение не станет не равно изначальному. Очень может оказаться что деление в php сравнимо по скорости работы со строками
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы