Число разбить на цифры php

Как разбить число на разряды (тысячи, миллионы и т.д.)?

Фото. Лайки. При достижении 1 000 или 10 000 лайков, цифры выводятся таким образом:

Интересует, как разделять тысячные, миллионные и т.п значения, чтобы например, было так

Возможно, в PHP есть стандартная функция, которая этим занимается?

6 ответов 6

Внезапно, для форматирования чисел используется number_format.

number
Форматируемое число.
decimals
Устанавливает число знаков после запятой.
dec_point
Устанавливает разделитель дробной части.
thousands_sep
Устанавливает разделитель тысяч.

number_format() — Форматирует число с разделением групп

$str = 10000; number_format($str, 0, ‘.’, ‘ ‘);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.

Связанные

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.9.20.40247

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

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.
?>

Источник

Разбить число на массив

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как разбить число на массив?
Здравствуйте! У меня есть число 3, которое нужно разбить на массив от 1 до 3. Как это.

Разбить число на массив
Ребят, второй час сижу и не пойму в чем проблема: Дано натуральное число. Проверить, является.

Разбить число и записать в массив
Подскажите пожалуйста, как разбить число любой длины на цифры и записать их в массив?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Разбить заданное число на цифры и записать их в массив
всем привет! у меня єсть задача в с++ и я не могу єє розвязать Дано число n и надо его разбить на.

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

Ввести число n, разбить число на цифры, и найти сумму этих цифр
Здравствуйте.Очень нужно сделать задание, кто может? Заранее спасибо. Ввести число n, разбить.

Число uint разбить на 8 элементов по 4 бита, преобразовать каждый элемент в 16-ричное число
Не могу решить следующую задачу: Есть некоторое число uint (32-bit), его необходимо разбить на 8.

Источник

Читайте также:  мощность замораживания морозильной камеры что это

Как разбить любое трехзначное число (введенное с клавиатуры) на три отдельные цифры?

это python, но для всех остальных языков почти тоже самое

версия для произвольного положительного числа:

igoodmood: тогда причем тут компьютеры, если вы пишете алгоритм НЕ НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ?

Все просто:
‘это комментарий
For I = 1 To 3 ‘ цикл. 3ка это разрядность делимого числа. Хоть 100 разрядов.
x = Число Mod 10 ‘ Число должно быть байтом без запятых!
Print x ‘ вот тут появляется последняя цифра числа
Число = Число / 10 ‘ тут число лишается последней цифры
Next

‘Для понимания: другие варианты:

Dim Цифра(4) As Byte ‘ массив из байт (целые числа без запятой!)
Цифра(4) = 123 ‘разбиваем 123 на 1,2,3
Цифра(1) = Цифра(4) / 100 ‘123/100=1
Цифра(3) = Цифра(4) Mod 10 ‘остаток от деления 123 на 10 = 3
Цифра(4) = Цифра(4) / 10 ‘ 123/10=12
Цифра(2) = Цифра(4)mod 10 ‘ остаток от деления 12 на 10 =2

Print Цифра(1) ; Цифра(2) ; Цифра(3) ‘ 1 2 3 печатаем наши три цифры

For I = 3 To 1 ‘ цикл. 3ка это разрядность делимого числа. Хоть 100 разрядов. Но и массив должен быть такой же
Цифра(i) = Цифра(4) Mod 10
Цифра(4) = Цифра(4) / 10
Next
Print Цифра(1) ; Цифра(2) ; Цифра(3)

Источник

Разбить число на цифры

Помогите разбить 3 значное число на цифры
ответ должен выглядеть так
cout

Конкретно в чем проблема?

Мне кажется стоит использовать операцию остатка от деления(%). Дальше додумывай сам, алгоритм может позже распишу, если не сможешь

А обобщить на любое целое неотрицательное число и оформить в виде функции слабО? 😉

Ну можно немножко посидеть и такое запилить, но задача была четкая, 3хзначное число, разложить на 3 отдельных, задача выполнена, выдумывать что-то не собираюсь. Завтра может попробую.

Вот, на любое целое или дробное, отрицательное или неотрицательное число
// Разбиение числа на цифры

Slonopotam, ты решал задачу, исходя из некорректно понятого условия. Изначально было написано: Помогите разбить 3 значное число на цифры. Число! Т.е. предполагается, что число существует уже в виде экземпляра числового типа (int, double и родственные типы), а не в виде строки символов.

(1) Не стоит хардкодить коды цифр и знаков. Например:

в другой кодовой таблице этим кодам могут соответствовать совсем другие символы. Более переносимый вариант:

(Полностью переносимый вариант — это сравнение с каждой из цифр в отдельности, поскольку теоретически возможны кодовые таблицы, в которых цифры не идут единым блоком. Но я с такой экзотикой не встречался. А вот с буквами национальных алфавитов такое встречается очень часто.)

(2) С десятичным разделителем всё ещё веселее. Правильным было бы запрашивать у операционной системы какой символ используется для десятичного разделителя в локали, действующей в момент запуска программы.

Так что в плане универсальности твоего решения ты немного погорячился.

Источник

Образовательный портал