Преобразование целого числа в строку в php

Числовые строки в PHP

Функцию можно использовать для определения, действительно ли строка или переменная является числовой или нет. Эта функция вернет для чисел, записанных в восьмеричной, двоичной или шестнадцатеричной нотации. Она также вернет , если числа записаны в экспоненциальном виде, например, .

PHP будет неявно использовать любую действительную числовую строку для числа, когда возникнет необходимость. Следующие примеры помогут вам лучше понять этот процесс:

Пример

Попробуй сам

Результат выполнения кода:

bool(true)

bool(true)

bool(true)

bool(true)

bool(false)

bool(false)

Как вы можете видеть, вся действительная числовая строка была преобразована в их соответствующие значения перед добавлением или другими операциями. Тип переменной $x в результате зависит от её конечного значения.

В предпоследнем случае шестнадцатеричная строка «0xfedd24» не преобразуется в ее десятичное значение потому, что PHP 7 не считает ее допустимой числовой строкой.

Примечание: Примечание: Начиная с PHP 7.0 функция возвращает значение для числовых строк в шестнадцатеричной форме (например, ), поскольку они больше не считаются числовыми строками.

Конвертировать с использованием StringBuffer или StringBuilder

StringBuilder и StringBuffer – это классы, используемые для объединения нескольких значений в одну строку. StringBuffer является потокобезопасным, но медленным, тогда как StringBuilder не является поточно-ориентированным, но работает быстрее.

Пример 1

class Method5
{
  public static void main(String args[]) 
  { 
    int number1 = -1234;
    StringBuilder sb = new StringBuilder(); 
    sb.append(number1); 
    String str1 = sb.toString(); 
    System.out.println("With StringBuilder method: string = " + str1); 
    StringBuffer SB = new StringBuffer(); 
    SB.append(number1); 
    String str2 = SB.toString(); 
    System.out.println("With StringBuffer method: string = " + str2); 
  } 
}

Вывод

With StringBuilder method: string = -1234
With StringBuffer method: string = -1234

Объект StringBuilder представляет объект String, который можно изменять и обрабатывать как массив с последовательностью символов. Чтобы добавить новый аргумент в конец строки, экземпляр StringBuilder реализует метод append().

Пример 2

class Method6
{
  public static void main(String args[]) 
  { 
	String str1 = new StringBuilder().append(1234).toString(); 
    System.out.println("With StringBuilder method: string = " + str1); 
    String str2 = new StringBuffer().append(1234).toString(); 
    System.out.println("With StringBuffer method: string = " + str2); 
  } 
}

Вывод

With StringBuilder method: string = -1234
With StringBuffer method: string = -1234

Наиболее важным является вызов метода toString(), чтобы получить строковое представление данных.

Различные типы чисел в PHP

Целые числа

Самый простой тип числа в PHP — это целое число. Как вы уже знаете, целые числа являются числами без какой-либо десятичной части. Например, 2 представляет собой целое число, а также 235298 или -235298. С другой стороны, 2.0 и 3.58 — это числа с плавающей точкой. Мы обсудим их более подробно позже.

Важно помнить, что нет необходимости, чтобы число было типа , если оно не имеет десятичной части. Например, составляет ровно , но тип этого результата по-прежнему будет числом

Когда вы умножаете числа, конечный результат будет иметь тип float, если хотя бы один из операндов был float. Не имеет значения, имеет ли конечное число десятичную часть или нет.

Кроме того, максимально возможное значение, которое целое число может иметь в PHP в вашей системе, может быть получено с использованием константы . Значение, большее по величине, чем значение, возвращаемое , будет храниться как float, даже если оно выглядит как целое число.

Как правило, вы ожидаете, что результат умножения двух переменных типа будет иметь тип . Однако это не так в случае переполнения. Умножение пяти или шести разных чисел может легко вывести вас за пределы типа . Например, результат — это float в моей системе, потому что он превышает значение , которое равно .

Вы можете использовать функцию , чтобы проверить, имеет ли число целочисленный тип. Существует два псевдонима этой функции: и . Обе они дадут один и тот же результат.

Числа с плавающей точкой

Следующий наиболее распространенный тип числа, с которым вы будете иметь дело, — это float. В отличие от целых чисел, которые в большинстве случаев были просто числами без десятичных точек, ряд типов может быть представлен различными способами. Значения , , и — все это числа с плавающей точкой.

PHP автоматически преобразует число в тип , когда используются десятичные или очень большие числа. Тип обычно может хранить числа с величиной, приблизительно равной . Однако это зависит от платформы.

Значение может показаться очень большим значением — и это так! — но числа с плавающей точкой имеют максимальную точность всего около 14 цифр. Любое число с большим количеством цифр, чем это, потеряет свою точность. Это означает, что вы можете хранить очень большое число, но вы не сможете хранить информацию о его точном значении — во многих случаях float является лишь приблизительным.

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

Бесконечность и NaN

Есть еще два вида числовых значений, с которыми вам придется иметь дело при написании программ, связанных с математикой. Эти значения бесконечности и (не числа). Оба эти значения требуют небольшого объяснения, потому что они отличаются от ожидаемых.

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

Точно так же обозначает Not a Number, но не проверяет, является ли значение числовым или нет. Значение используется для результата математических операций, которые невозможны в математике. Например, будет . Аналогично, также будет . Вы можете проверить, не является ли значение, возвращаемое математической операцией, не числом, используя функцию .

14 ответов

Лучший ответ

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

С точки зрения обслуживания это очевидно, что вы пытаетесь сделать, а не другие, более эзотерические ответы. Конечно, это зависит от вашего контекста.

847

IPSDSILVA
26 Июн 2020 в 15:52

Есть много способов сделать это.

Два примера:

См. Руководство PHP по

99

Sanjay Sheth
23 Июн 2009 в 22:42

Теперь — это строка.

Но, возможно, вы захотите привыкнуть к кастингу. Поскольку кастинг — это правильный способ добиться чего-то в этом роде:

Другой способ — заключить в кавычки:

48

Peter Mortensen
12 Сен 2019 в 22:17

Есть несколько способов «преобразовать» целое число в строку в PHP.

Традиционный способ информатики — преобразовать переменную в строку:

Вы также можете воспользоваться преимуществами неявного преобразования типов PHP и интерполяции строк:

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

Я бы не рекомендовал последний вариант, но я видел в дикой природе код, который полагался на это поведение, поэтому подумал, что передам его.

12

Peter Mortensen
12 Сен 2019 в 22:21

Все эти ответы прекрасны, но все они возвращают вам пустую строку, если значение равно нулю.

Попробуйте следующее:

10

casual
20 Ноя 2019 в 14:58

Есть много возможных способов конвертации:

4

UserBSS1
22 Авг 2016 в 08:09

Как хорошо видно из ответов, да, есть несколько способов. Однако в PHP это редко нужно делать. «Догматический способ» написания PHP — это полагаться на свободную систему типизации языка, которая будет прозрачно приводить тип по мере необходимости. Для целочисленных значений это обычно не проблема. Однако вы должны быть очень осторожны со значениями с плавающей запятой.

1

Peter Mortensen
25 Май
2011 в 09:08

Я бы сказал, это зависит от контекста. Можно использовать strval () или оператор приведения (string). Однако в большинстве случаев PHP решит, что для вас лучше, если, например, вы используете его с echo или printf …

Одно маленькое замечание: die () нужна строка и не будет показывать int :)

Peter Mortensen
12 Сен 2019 в 22:19

Попробуй это

paradox
15 Июл 2020 в 09:31

Вы можете просто использовать следующее:

-1

Elzo Valugi
18 Авг 2016 в 22:02

Быстрее чем

-4

Peter Mortensen
25 Май 2011 в 09:09

Использование:

Или это могло быть:

Или же:

7

Peter Mortensen
12 Сен 2019 в 22:22

Вы можете использовать оператор точки и присоединить к нему строку (и она будет преобразована в строку):

Или, более правильно, вы можете просто ввести целое число в строку:

4

Peter Mortensen
12 Сен 2019 в 22:18

Таким образом, эхо будет возвращено строкой .

Kaushik shrimali
13 Сен 2019 в 05:23

Приведение строк и чисел с плавающей точкой к целым числам

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

Вы можете использовать или для преобразования любого значения в целое число. В случае float значения всегда будут округлены до нуля. Другой способ преобразовать строки и float в целые числа — с помощью функции . Обе функции и работают одинаково.

Следует отметить, что при переполнении строк для целых чисел конечное значение будет устанавливаться в максимально допустимое целочисленное значение. Однако приведение значения float, значение которого превышает максимально допустимое целочисленное значение, приведет к колебанию значения между и !

В определенных ситуациях вам может понадобиться иметь дело с очень большими числами, не теряя при этом никакой точности. Например, невозможно получить точный результат умножения и с помощью оператора . Это даст вам после конвертации float. Вычисление фактического ответа, которое составляет , потребует использования библиотек, таких как BCMath. BCMath работает, сохраняя числа как строки и выполняя арифметические операции над ними вручную. Просто помните, что если вы используете BCMath, вы будете иметь дело со строками вместо целых чисел и чисел с плавающей точкой.

Некоторые библиотеки хотят, чтобы вы передавали только числа типа их методам, но вы могли бы неосознанно предоставить им значение float. Это может произойти, потому что значение float без десятичной части похоже на int. Это почти наверняка приведет к ошибке, если библиотека использует такую функцию, как , чтобы проверить, имеет ли переданный параметр целочисленный тип. В таких случаях всегда полезно сначала указать это число в int, используя либо , либо , а затем передать его любым функциям или методам библиотеки.

Пример того, когда такая ситуация может возникнуть, — это когда вы имеете дело с математическими функциями, такими как и и т. д. и всегда возвращают float, даже если вы передадите им int!

Одной из проблем приведения плавающих чисел в целые является то, что вы потеряете десятичную часть чисел. Это может быть или не быть желательным. В таких случаях вы можете использовать такие функции, как , и только отбрасывать число до типа int, если его фактическое значение равно значению, возвращаемому .

Допустим, у вас есть библиотека, которая позволяет выполнять дробную арифметику и выдает исключения, когда вы передаете число ее методу , которое не относится к типу int. Множество операций может превращать число в тип float, даже если оно по-прежнему является целым числом в пределах минимальной и максимальной границ типа int. Использование чего-то вроде приведенного выше кода поможет вам легко справиться с такими случаями.

Численное преобразование

Численное преобразование происходит в математических функциях и выражениях.

Например, когда операция деления применяется не к числу:

Мы можем использовать функцию , чтобы явно преобразовать к числу:

Явное преобразование часто применяется, когда мы ожидаем получить число из строкового контекста, например из текстовых полей форм.

Если строка не может быть явно приведена к числу, то результатом преобразования будет . Например:

Правила численного преобразования:

Значение Преобразуется в…
Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем , иначе из непустой строки «считывается» число. При ошибке результат .

Примеры:

Учтите, что и ведут себя по-разному. Так, становится нулём, тогда как приводится к .

Большинство математических операторов также производит данное преобразование, как мы увидим в следующей главе.

12 ответов

  • 624 рейтинг

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

    С точки зрения обслуживания очевидно, что вы пытаетесь сделать, а не некоторые другие более эзотерические ответы. Конечно, это зависит от вашего контекста.

    ответ дан Chris Thompson, с репутацией 10702, 23.06.2009

  • 77 рейтинг

    Есть много способов сделать это.

    Два примера:

    См. Руководство по PHP для для получения дополнительной информации.

    ответ дан Sanjay Sheth, с репутацией 1134, 23.06.2009

  • 36 рейтинг

    теперь это строка.

    Но вы можете привыкнуть к кастингу. Поскольку кастинг — это правильный способ сделать что-то в этом роде.

    Другой способ заключается в заключении в кавычки:

    ответ дан Sev, с репутацией 11681, 23.06.2009

  • 8 рейтинг

    Существует несколько способов «преобразовать» целое число в строку в PHP.

    Традиционный способ CS — преобразовать переменную в строку

    .

    Вы также можете воспользоваться неявным преобразованием типов в PHP и интерполяцией строк

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

    Я бы не рекомендовал последний вариант, но я видел дикий код, который основывался на этом поведении, поэтому подумал, что я передам его.

    ответ дан Alan Storm, с репутацией 126941, 23.06.2009

  • 7 рейтинг

    Все эти ответы хороши, но все они возвращают пустую строку, если значение равно нулю.

    Попробуйте следующее:

    ответ дан Microprocessor Cat, с репутацией 71, 10.04.2015

  • 6 рейтинг

    или это может быть:

    или:

    ответ дан gewel, с репутацией 273, 6.02.2013

  • 4 рейтинг

    Есть много возможных способов конвертации:

    ответ дан Saad, с репутацией 953, 27.03.2013

  • 3 рейтинг

    Вы можете использовать оператор точки и связать с ним строку (и она будет приведена к типу):

    Или, точнее, вы можете просто ввести приведение целого числа к строке:

    ответ дан Andrew Dunkman, с репутацией 921, 23.06.2009

  • 0 рейтинг

    Я бы сказал, что это зависит от контекста. strval () или оператор приведения (строка), однако в большинстве случаев PHP решит, что хорошо для вас, например, если вы используете его с echo или printf. , , Одно маленькое примечание: die () нужна строка и не будет отображать int :)

    ответ дан merkuro, с репутацией 5475, 23.06.2009

  • 0 рейтинг

    Поскольку ответы здесь наглядно демонстрируют, да, есть несколько способов. Однако в PHP вам редко нужно это делать. «Догматический способ» написания PHP — полагаться на свободную систему типизации языка, которая будет прозрачно приводить тип по мере необходимости. Для целочисленных значений это обычно без проблем. Вы должны быть очень осторожны со значениями с плавающей точкой.

    ответ дан troelskn, с репутацией 87851, 24.06.2009

  • 0 рейтинг

    Вы можете просто использовать следующее:

    ответ дан Imam, с репутацией 1, 10.11.2015

  • -4 рейтинг

    быстрее, чем

    ответ дан Arthur Kushman, с репутацией 76, 21.01.2011

Преобразование строк

В С для преобразования строк, содержащих числа, в численные значения в библиотеке stdlib.h предусмотрен следующий набор функций:double atof(const char *string); // преобразование строки в число типа doubleint atoi(const char *string); // преобразование строки в число типа intlong int atol(const char *string); // преобразование строки в число типа long intlong long int atoll(const char *string); // преобразование строки в число типа long long int

Корректное представление вещественного числа в текстовой строке должно удовлетворять формату:

цифры]

После символов E, e указывается порядок числа. Корректное представление целого числа в текстовой строке должно удовлетворять формату:

цифры

Помимо приведенных выше функций в библиотеке stdlib.h доступны также следующие функции преобразования строк в вещественные числа:

float strtof(const char * restrict string, char ** restrict endptr);double strtod(const char * restrict string, char ** restrict endptr);long double strtold(const char * restrict string,char ** restrict endptr);

Аналогичные функции присутствуют и для преобразования строк в целочисленные значения:

long int strtol(const char * restrict string, char ** restrict endptr, int base);unsigned long strtoul(const char * restrict string,char ** restrict endptr, int base);long long int strtoll(const char * restrict string,char ** restrict endptr, int base);unsigned long long strtoull(const char * restrict string,char ** restrict endptr, int base);

Функции обратного преобразования (численные значения в строки) в библиотеке stdlib.h присутствуют, но они не регламентированы стандартом, и рассматриваться не будут. Для преобразования численных значений в строковые наиболее удобно использовать функции sprintf и snprintf.

Преобразование списка строк

Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле . Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float().

str = 
number = []
for item in str:
    number.append(float(item))
print(number)

# Output:
# 

В данном примере у нас есть список . Мы создаем пустой список , куда добавим наши числа в формате float. Далее мы используем цикл для добавления каждого элемента из исходного списка в список . При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой.

В итоге мы получим новый список , состоящий из исходных элементов, но только теперь это уже не строки, а числа с плавающей запятой.

Массивы строк в С

Объявление массивов строк в языке С также возможно. Для этого используются двумерные массивы символов, что имеет следующий синтаксис: char имя;

Первым размером матрицы указывается количество строк в массиве, а вторым – максимальная (с учетом завершающего нуля) длина каждой строки. Например, объявление массива из пяти строк максимальной длиной 30 значащих символов будет иметь вид:

char strs;

При объявлении массивов строк можно производить инициализацию: char имя = {строковый литерал №1, … строковый литерал №N};

Число строковых литералов должно быть меньше или равно количеству строк в массиве. Если число строковых литералов меньше размера массива, то все остальные элементы инициализируются пустыми строками. Длина каждого строкового литерала должна быть строго меньше значения длины строки (для записи завершающего нуля).

Например:

char days = {    «Январь», «Февраль», «Март», ”Апрель», «Май»,    «Июнь», «Июль», «Август», «Сентябрь»,»Октябрь»,    «Ноябрь», «Декабрь»};

При объявлении массивов строк с инициализацией допускается не указывать количество строк в квадратных скобках. В таком случае, количество строк в массиве будет определено автоматически по числу инициализирующих строковых литералов. Например, массив из семи строк:

char days[] = {    «Понедельник», «Вторник», «Среда», «Четверг»,    «Пятница», «Суббота», «Воскресенье»};

Источники

Я бы хотел порекомендовать отличную книгу “Understanding ES6” написанную Nicholas C. Zakascholas. Книга является отличным ресурсом для изучения ES6 с достаточным уровнем освещения: не слишком поверхностно, и в тоже время не погружается в механику работы движка черезчур.

Ещё одна отличная книга, на этот раз по ES5 — SpeakingJS написанная Axel Rauschmayer.

Современный учебник Javascript — https://learn.javascript.ru/,

в особенности эти две страницы, посвящённые преобразованию типов.

JavaScript Comparison Table — https://dorey.github.io/JavaScript-Equality-Table/

wtfjs — небольшой блог о языке, который мы все так любим, не смотря на то что он дает много поводов его ненавидеть — https://wtfjs.com/

sprintf

int sprintf(
   char* dest,
   const char* fmt,
   ...
);

Записывает в буфер по адресу dest строку,
сформированную на основании форматирующей строки fmt
и произвольного количества необязательных аргументов. Строка
fmt, помимо обычных символов, может содержать так
называемые форматирующие последовательности. Каждая такая
последовательность соответствует одному необязательному аргументу; она начинается с
символа «%» и имеет в общем случае форму

%fw.pst

Здесь t — это один символ, определяющий тип аргумента, строковое
представление которого должно быть подставлено на место данной форматирующей
последовательности, и вид выполняемого преобразования. Это обязательная составляющая
форматирующей последовательности; допустимо использование следующих символов:

t ожидаемыйтип аргумента вид преобразования
c char
di int или long в десятичной системе
u unsigned int в десятичной системе
o unsigned int в восьмеричной системе
x unsigned int в шестнадцатеричной системе, буквы a…f строчные
X unsigned int в шестнадцатеричной системе, буквы A…F заглавные
e double в экспоненциальной форме, буква e строчная
E double в экспоненциальной форме, буква E заглавная
f double в десятичной форме
g double в наиболее компактной форме, буква e строчная
G double в наиболее компактной форме, буква E заглавная
p void* в шестнадцатеричной системе, буквы A…F заглавные
s char* параметр интерпретируется как строка C/C++

Необязательная часть f форматирующей последовательности определяет выравнивание
преобразованного аргумента, необходимость отображения его знака, etc, и может состоять
из одного или нескольких символов, перечисленных ниже:

символ значение
преобразованный аргумент выравнивается по левому краю (по умолчанию
— по правому)
+ знак отображается при любом значении аргумента (по умолчанию —
только при отрицательном)
«лишние» позиции заполняются символом «0» (по
умолчанию — пробелом)
пробел при положительном значении аргумента на месте знака выводится
пробел
# o к преобразованному аргументу добавляется префикс «0»
x к преобразованному аргументу добавляется префикс «0x»
X к преобразованному аргументу добавляется префикс «0X»
eEf преобразованный аргумент будет содержать десятичную точку даже при отсутствии
дробной части
gG преобразованный аргумент будет содержать десятичную точку даже при отсутствии
дробной части;
при необходимости дробная часть дополняется незначащими нулями

Необязательная составляющая w задает требуемую минимальную ширину преобразованного
аргумента; заметим, что аргумент будет выведен полностью, даже если заданное значение
окажется недостаточным.

Необязательная составляющая p определяет точность представления аргумента; ее
интерпретация зависит от типа этого аргумента:

тип p
eEf требуемое количество знаков после десятичной точки; при необходимости выполняется
округление аргумента или дополнение его дробной части незначащими нулями
gG максимальное количество значащих цифр
s максимальное количество символов аргумента, которое следует использовать

Необязательная составляющая s «уточняет» размер целочисленного
аргумента и может быть одним из следующих символов:

символ размер аргумента
l long
h short

Если в формируемую строку необходимо вставить символ «%», то его следует
написать два раза подряд. Ниже приведен пример использования функции
sprintf:

Итого

Существует 3 наиболее широко используемых преобразования: строковое, численное и логическое.

– Происходит, когда нам нужно что-то вывести. Может быть вызвано с помощью . Для примитивных значений работает очевидным образом.

– Происходит в математических операциях. Может быть вызвано с помощью .

Преобразование подчиняется правилам:

Значение Становится…
Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем , иначе из непустой строки «считывается» число. При ошибке результат .

– Происходит в логических операциях. Может быть вызвано с помощью .

Подчиняется правилам:

Значение Становится…
, , , ,
любое другое значение

Большую часть из этих правил легко понять и запомнить. Особые случаи, в которых часто допускаются ошибки:

  • при численном преобразовании становится , не .
  • и строки из одних пробелов типа при логическом преобразовании всегда .

В этой главе мы не говорили об объектах. Мы вернёмся к ним позже, в главе Преобразование объектов в примитивы, посвящённой только объектам, сразу после того, как узнаем больше про основы JavaScript.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: