сколько цифр в числе php
PHP-получить длину цифр в числе
Я хотел бы спросить, как я могу получить длину цифр в целочисленном числе. Например:
9 ответов
Каков очень эффективный способ определения количества цифр в целом числе в C++?
Он имеет множество преимуществ. Это быстрее, вы не выполняете приведение типов, он работает с большими числами, он работает с различными системами счисления, такими как bin, hex, oct.
Уравнение делает логарифм с основанием 10, затем делает из него пол и добавляет 1.
Это решение может работать независимо от базы, поэтому, если вы хотите вычислить длину двоичного или hex, просто измените базу логарифма.
Принятое решение представляет собой проблему при оценке отрицательных чисел.
Он работает с положительным числом:
Но с отрицательным числом (-) добавляется к счету:
Более элегантный способ 🙂
Вы также можете использовать некоторую базовую математику!
Просто использование какой-то версии (int)(log($num,10)+1) не работает для 10, 100, 1000 и т. Д. Он считает число 10 как 1 цифру, 100 как две цифры и т. Д. Он также терпит неудачу с 0 или любым отрицательным числом.
Если вы должны использовать математику (и число неотрицательное), используйте:
$numlength = (int)(log($num+1, 10)+1);
Но решение strlen примерно так же быстро в PHP.
Следующая функция работает либо с целыми числами, либо с плавающими числами (читайте комментарии для получения дополнительной информации):
Я рекомендую вам использовать PHP7 one, он короче и чище.
Надеюсь, это поможет!
Подсчитайте количество цифр в заданном числе или введенном пользователем.
Это код, который рекурсивно подсчитывает количество цифр в числе. Что я могу добавить к этому коду, чтобы узнать, сколько разных цифр в числе? Или, может быть, есть какой-то другой способ? int numberOfDigits(int n) < if(n==0) return 0; else return numberOfDigits(n/10)+1; >
Сбросьте переменную в виде строки
Тогда вы можете сделать с ним все, что захотите! И наоборот для изменения строки на int
считайте только целочисленное значение
Похожие вопросы:
Я пишу функцию, которая должна использовать рекурсию, чтобы получить количество цифр в целочисленном числе, например, 236 имеет 3 цифры. У меня есть это до сих пор, но это не работает. Кроме того.
В Python, как вы находите количество цифр в целом числе?
Каков очень эффективный способ определения количества цифр в целом числе в C++?
Подсчитайте количество цифр в заданном числе или введенном пользователем.
Это код, который рекурсивно подсчитывает количество цифр в числе. Что я могу добавить к этому коду, чтобы узнать, сколько разных цифр в числе? Или, может быть, есть какой-то другой способ? int.
Полезные PHP коды — для новичков
При написании кода в PHP есть задачи, которые встречаются чаще остальных или просто как-то выделяются из общего множества. В этой статье поговорим о некоторых из них.
Тут собрана лишь малая часть, и наверное это не последняя статья на тему несложных популярных задачек в PHP. Кроме того, я планирую дополнять эту статью.
Короткая запись операторов присваивания
Время выполнения PHP скрипта
Округление дробных чисел
Округление до целых
Чтобы округлить число в php существует несколько функций:
Округление до дробных
Округление последнего числа происходит как в математики: если следующее больше или равно 5 то в большую сторону, в остальных случаях в меньшую.
Целая часть и остаток от деления чисел
Чтобы получить остаток от деления можно воспользоваться оператором % :
Числа кратные к N или каждый N-ый блок в цикле
Нужно разделить число на число и если остатка нет, то первое число делиться нацело на второе, а значит кратное.
Где применить эту кратность?
Допустим, есть цикл записей и нужно к каждому третьему блоку добавить отдельный css класс. Тут-то кратность нам и поможет.
Форматирование чисел (денег) в PHP
Форматирует число с разделением групп.
number(обязательный)
Число, которое нужно отформатировать.
decimals
Сколько знаков после запятой показывать.
dec_point
Разделитель для дробной части.
Для форматирования с учетом языка сайта в WordPress есть специальная функция number_format_i18n()
Для вывода денежных величин используйте похожую функцию money_format()
Как получить ключи или значения ассоциативного PHP массива
Это может пригодится когда нужно сделать поиск по ключам массива. В PHP такой встроенной функции нет.
Создаем массив из диапазона чисел или букв
Как получить максимальное или минимальное число из массива в PHP
Также можно передать массив из чисел, тогда мин. или макс. число будет выбрано из значений массива.
Как получить часть строки (подстроку)
Однако нужно знать, что скорость их работы в разы ниже: substr() работает с одинаковой скоростью для строки любой длинны. А вот mb_substr() и iconv_substr() работают тем медленнее чем длине строка в них указывается. В среднем они в 5-10 раз медленнее, однако альтернатив нет, если нужно обработать кириллицу, придется использовать их.
Количество символов в строке
Как посчитать сколько раз встречается одна строка в другой
Удаление символов внутри строки
Сделать это можно многими способами, но самый простой это функция str_replace() :
Удаление символов на концах строки
Также, не все знают что есть аналогичные функции:
Удаление пустых символов на концах строки
Удаление указанных символов в начале и конце строки
Как перевернуть строку в PHP
День недели и месяц по-русски на PHP
Месяц по-русски
День недели
Есть что добавить? Милости прошу в комментарии.
number_format
(PHP 4, PHP 5, PHP 7, PHP 8)
number_format — Форматирует число с разделением групп
Описание
Форматирует число сгруппированными тысячами и, возможно, десятичными цифрами.
Список параметров
Устанавливает разделитель дробной части.
Устанавливает разделитель тысяч.
Возвращаемые значения
Список изменений
Примеры
Пример #1 Пример использования number_format()
Во Франции обычно используются 2 знака после запятой (‘,’), и пробел (‘ ‘) в качестве разделителя групп. Этот пример демонстрирует различные способы форматирования чисел:
Смотрите также
User Contributed Notes 38 notes
It’s not explicitly documented; number_format also rounds:
Outputs a human readable number.
if you want to benchmark all costs for 5 seconds:
(with ms meaning milliseconds and s meaning seconds)
I ran across an issue where I wanted to keep the entered precision of a real value, without arbitrarily rounding off what the user had submitted.
I figured it out with a quick explode on the number before formatting. I could then format either side of the decimal.
You can change %03d to %04d, etc.
See also the documentation for localeconv, which will provide values for decimal point and thousands separator from the C standard library.
Of course localeconv features many more locale information, like indicating to put the negative sign behind the value for some locale settings which can’t be used to customize present number_format.
Simple function to show money as only dollars if no cents, but will show 2 decimals if cents exist.
The ‘cents’ flag can force to never or always show 2 decimals
And remember to always contribute custom functions if they might be useful to the rest of us or future versions of the php language.
Just an observation:
The number_format rounds the value of the variable.
$val1 = 1.233;
$val2 = 1.235;
$val3 = 1.237;
echo number_format($val1,2,»,»,».»); // returns: 1,23
echo number_format($val2,2,»,»,».»); // returns: 1,24
echo number_format($val3,2,»,»,».»); // returns: 1,24
//again check through array for non numerical characters but skipping allready processed keys
//if is not number remove from array
// Here is a function that produces the same output as number_format() but also works with numbers bigger than 2^53.
$original_number= 9223372036854775805;
echo a_number_format($original_number, 4, ‘.’,»‘»,3);
// Outputs: 9’223’372’036’854’775’805.1230
In my function my_number_format() [shown below] there was a bug.
Here is the corrected version:
?>
Thanks to Federico Cassinelli for the bug report.
[EDIT BY danbrown AT php DOT net: The original note follows.]
But I have a problem with that: I want to add commas as thousand separators and change the decimal-separator (this could also be done with str_replace), but I do not want to change the amount of fractional digits!
But since the 2nd argument of number_format is necessary to enter the 3rd and 4th argument, this cannot be done with number_format. You have to change the fractional digits with this function.
But I want that 1234.56 changes into 1.234,56 and 1234.567890123456 changes into 1.234,567890123456
So, I created following function, that doesn’t change the amount of fractional digits:
A simple funtion to format american dollars.
To prevent the rounding that occurs when next digit after last significant decimal is 5 (mentioned by several people below):
What do you do if some of your numbers have decimal places, and some don’t? You can switch between functions, but if you’re building it in a loop, that’s not a good solution. Instead, we have the same as below, with a slight change:
function number_format_unlimited_precision($number,$decimal = ‘.’) <
$broken_number = explode($decimal,$number);
if($broken_number[1]==0) <
return number_format($broken_number[0]);
>else <
return number_format($broken_number[0]).$decimal.$broken_number[1];
>;
>;
formatting numbers may be more easy if u use number_format function.
I also wrote this :
function something($number)
<
$locale = localeconv();
return number_format($number,
$locale[‘frac_digits’],
$locale[‘decimal_point’],
$locale[‘thousands_sep’]);
>
function formats numbers of datetime type,
[ «zaman» ]= «1983-8-28 5:5:5» ;
Don’t forget to specify thousands_sep that default is ‘,’ to another value, otherwise function will return null.
This way, I use my 1st variable for calculations and my 2nd variable for output. I’m sure there are better ways to do it, but this got me back on track.
simpler function to convert a number in bytes, kilobytes.
?>
you may also add others units over PeraBytes when the hard disks will reach 1024 PB 🙂
If you want a number of digits after the point, but not unnecessary zeros.
Eg.
number_format(1.20000,4) = 1.2000
num_format(1.20000,4,0) = 1.2
number_format(1.20000,4) = 1.2000
num_format(1.20000,4,2) = 1.20
number_format(1.23456,4) = 1.2345
num_format(1.23456,4,2) = 1.2345
I’d like to comment to the old notes of «stm555» and «woodynadobhar».
They wrote about «number_format_unlimited_precision()».
I guess many of us need that kind of function, which is the almost same function as number_format but don’t round a number.
Does Anyone know any new solution in a recent PHP version?
If you use space as a separator, it will break on that space in HTML tables.
Furthermore, number_format doesn’t like ‘ ‘ as a fourth parameter. I wrote the following function to display the numbers in an HTML table.
function to convert numbers to words
indian: thousand,lakh,crore
Note: function can only convert nos upto 99 crores
I’m not sure if this is the right place anyway, but «ben at last dot fm»‘s ordinal function can be simplified further by removing the redundant «floor» (the result of floor is still a float, it’s the «%» that’s converting to int) and outer switch.
Note that this version also returns the number with the suffix on the end, not just the suffix.
This is a simple and useful function to convert a byte number in a KB or MB:
if you want as a separator and use windows charset this piece of code may help:
echo convertNumberToWordsForIndia ( «987654321» );
//Output ==> Indian Rupees Ninty Eight Crores Seventy Six Lakhs Fifty Four Thousand Three Hundred & Twenty One Only.
?>