@daMage

Как посчитать количество цифр после запятой?

Есть число 1.3400. Как узнать, что у него 4 цифры после запятой? Думал работать со строкой, но приведение типов округляет число до 1.34
  • Вопрос задан
  • 28691 просмотр
Решения вопроса 2
morozovdenis
@morozovdenis
если float то никак. в принципе у действительного числа кол-во нулей в конце бесконечно

если string то легко, парсите пополам по точке
Ответ написан
@stas3572
www.php.net/manual/ru/function.sprintf.php
$num = (float)1.3400;
$nums = sprintf("%01.4f", $num); // будет строкой "1.3400"

Ну а дальше просто строковые функции - находим положение точки в строке, возвращаем часть строки от точки и собственно смотрим длину этой строки.

Но это под конкретную написанную вами задачку, вам что надо форматить то? Денежные единицы? Время (для счетчиков)?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
BuriK666
@BuriK666
Компьютерный псих
1.3400 === 1.34 === 1.340000000000
нулей в конец можно дописать сколько угодно. (Математика 5 класс)
Ответ написан
Комментировать
@daMage Автор вопроса
В функцию передается число: 1.3500, 1.36, 1.2...
Функция должна возвращать количество цифр после точки
Ответ написан
Комментировать
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
WUT?

Что требуется? Всегда возвращать четыре, или всё таки игнорировать нули?

Воспользовавшись здравым смыслом, рискну предположить, что нули игнорируются, тогда с этим соусом.
Ответ написан
viktorvsk
@viktorvsk
Довольно странная задача и формулировка. Хотите определять _нематематический_ вид числа, представляйте (вводите) его как строку. А вы хотите проводить математические операции с нематематическим сущностями. Как-то немного запутанно получается.

Действительно интересно, возможно ли это. Сдается, что врядли, ведь флоат - это не 1.35000, а что-то вроде 1.35000124124512512581259283593857238905823782358723592308592385923905 где-то там далеко. Поэтому как дать понять php, сколько цифр из него вы хотите использовать без явного указания по средствам number_format или операции округления ?
Ответ написан
Комментировать
@wers777
Делал что то похоже
получилось так
$devide = (float)'1.3400'; //исходное число, при float отрезает не нужные 0
$explodeDigits = explode('.', (string)$devide); //делим по запятой
echo strlen((string)$explodeDigits[1]); //количество знаков после запятой
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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