Перевод строки в число

Статус
В этой теме нельзя размещать новые ответы.

Joker84

Постоялец
Регистрация
8 Авг 2007
Сообщения
68
Реакции
2
Добрый день,помогите советом если кто знает:
получаем очень большое число (оно получается путем слияния из нескольких полей что то на подобие ввода кредитной карты - 6 блоков по 4 символа) вот пример 195997400094310013091502
т.о если сделать(int)195997400094310013091502 не прокате оно вернет 2147483647


как такую строку перевести в число? чтобы можно было провести сравнение вида


if (195997400094310013091502 >195997400094310013091400) {действие}
 
Для чисел помимо integer в php есть только float, но с ним не всё так просто - Для просмотра ссылки Войди или Зарегистрируйся
Просто сравнивай получаемые строки функцией - Для просмотра ссылки Войди или Зарегистрируйся

PS: строки тоже можно сравнивать между собой и без дополнительного преобразования типов - это ведь язык с динамической типизацией ;)
if ('195997400094310013091502' >'195997400094310013091400') {действие}
 
Последнее редактирование:
PS: строки тоже можно сравнивать между собой и без дополнительного преобразования типов - это ведь язык с динамической типизацией ;)
if ('195997400094310013091502' >'195997400094310013091400') {действие}
Сроки сравниваются по алфавиту слева направо - это может привести к неверному результату, в случае различного количества разрядов т.е. '9' > '199'.

Однако, в PHP при сравнении строк, состоящих только из цифр, они предварительно преобразуются в числа (as number) и в данном конкретном примере будет равенство:

Код:
echo var_dump('195997400094310013091502' == '195997400094310013091400'); //  bool(true)

Самый простой вариант (в том смысле, что не требует писать сравнение "ручками") - уравнять количество символов в "числах", добавив слева ведущих нулей (см. str_pad()) к "числу" с наименьшей длиной (strlen()), добавить по одинаковому нечисловому символу (пусть будет 'a') и сравнивать как строки (см пост от latteo).

Скрытое содержимое доступно для зарегистрированных пользователей!


Если же количество символов одинаково, можно просто использовать
Код:
strcmp('195997400094310013091502' , '195997400094310013091400')
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху