Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Сравнение огромных чисел (bigint) / 14 сообщений из 14, страница 1 из 1
01.03.2013, 22:06
    #38171651
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
Всем привет.

Код: php
1.
2.
3.
4.
$a = 9223372036854775806;
$b = 9223372036854775807;
if($b > $a) echo 'b > a';
else echo 'b <= a';



Я взял максимально допустимое значение типа bigint БД, а второе - на единицу меньше и попробовал сравнить. Код вывел
Код: php
1.
b <= a

.

1. Почему?
2. Как правильно (и можно ли вообще) сравнивать такие числа? Если нет, то как быть? :)

Заранее спасибо!
...
Рейтинг: 0 / 0
01.03.2013, 22:13
    #38171652
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
Эммм... 32-битная ОСь?
...
Рейтинг: 0 / 0
01.03.2013, 22:14
    #38171653
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
Вдогонку примеры 3 и 4
...
Рейтинг: 0 / 0
01.03.2013, 23:23
    #38171695
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
Спасибо за примеры.
Ось, да, 32 битная. Судя из того, что написано в примерах, я превысил максимальное значение типа INT, поэтому оно преобразовалось во FLOAT, а сравнивать FLOAT - это зло :) Я вообще на этот раз обойдусь простым интом, но все же интересно, что делать если понадобится BOGINT? Определять константу PHP_INT_MAX с нужным значением?
...
Рейтинг: 0 / 0
01.03.2013, 23:37
    #38171709
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
urukhayОпределять константу PHP_INT_MAX с нужным значением?Увы, определили до Вас.
...
Рейтинг: 0 / 0
01.03.2013, 23:42
    #38171711
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
urukhayЯ взял максимально допустимое значение типа bigint БДurukhayчто делать если понадобится BOGINT?Если используемая СУБД умеет оперировать такими числами, можно ее попытаться использовать для этой цели. Однако, возможно, много проще будет использовать 64-битную ОС.
...
Рейтинг: 0 / 0
02.03.2013, 00:15
    #38171727
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
либо поставить модуль для работы с большими числами
...
Рейтинг: 0 / 0
02.03.2013, 10:51
    #38171858
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
Сама ось тут какое значение имеет? Сам пхп 32-х битный и на 64 битной оси будет работать так же.
...
Рейтинг: 0 / 0
02.03.2013, 11:31
    #38171874
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
авторОднако, возможно, много проще будет использовать 64-битную ОС
Вообще-то, ради одного случая ставить ОСь, как-то странно на мой взгляд :)
авторЕсли используемая СУБД умеет оперировать такими числами, можно ее попытаться использовать для этой цели.
СУБД умеет оперировать такими числами, но работа с ними должна осуществляться именно в пхп.
авторлибо поставить модуль для работы с большими числами
А не подскажете, что за модуль такой?
авторСама ось тут какое значение имеет? Сам пхп 32-х битный и на 64 битной оси будет работать так же.
Очень врядли, что ради одной задачи я буду ставить новую ось :) Хотелось бы решить задачу какими-то другими способами.
...
Рейтинг: 0 / 0
02.03.2013, 18:27
    #38172060
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
HettСам пхп 32-х битный и на 64 битной оси будет работать так же.Значит, мануалы нагло врут, а тест этого примера на 64-битке подтасовывает факты? ;-)
...
Рейтинг: 0 / 0
02.03.2013, 18:29
    #38172061
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
авторЗначит, мануалы нагло врут, а тест этого примера на 64-битке подтасовывает факты? ;-)
php работает так же. просто тип int там системозависимый.
...
Рейтинг: 0 / 0
02.03.2013, 18:31
    #38172063
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
urukhayавторОднако, возможно, много проще будет использовать 64-битную ОС
Вообще-то, ради одного случая ставить ОСь, как-то странно на мой взгляд :)Мне кажется странным другое. Нынче 64-битная архитектура сплошь и рядом, так чего ради упираться в 32-бита... Вот это странно.


urukhayавторлибо поставить модуль для работы с большими числами
А не подскажете, что за модуль такой?Смотрите, что больше подойдет под Вашу задачу: тынц и тынц
...
Рейтинг: 0 / 0
03.03.2013, 00:58
    #38172251
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
Спасибо, буду изучать.
...
Рейтинг: 0 / 0
03.03.2013, 10:36
    #38172316
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[PHP] Сравнение огромных чисел (bigint)
vkleHettСам пхп 32-х битный и на 64 битной оси будет работать так же.Значит, мануалы нагло врут, а тест этого примера на 64-битке подтасовывает факты? ;-)
Да, вычитал уже, что FLOAT зависит от ОС, но только у меня эти числа все равно не влезли.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Сравнение огромных чисел (bigint) / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]