Функция выдает разный результат в зависимости от места запуска 0_0

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

SocMaster

Профессор
Регистрация
26 Июл 2011
Сообщения
211
Реакции
49
Помогите, запускаю на локалке код
PHP:
        $parts = explode('_', '1402330806408370257_325537687');
        $id = $parts[0];
        $alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
        $shortenedId = '';
        while ($id > 0) {
            $remainder = $id % 64;
            $id = ($id - $remainder) / 64;
            $shortenedId = $alphabet{$remainder} . $shortenedId;
        }
        echo $shortenedId;
Выдает BN2FHBGu_ что не верно
Запускаю на сервере уже, выдает правильно BN2FHBFjthR
Один и тот же код вот как выше, так и запускал что на локалке что на сервере
С какого...*** по разному выдает в зависимости от места запуска скрипта?
Не могу никак понять в чем проблема
 
А PHP и там и там одинаковой версии?
 
Хм... Не уверен конечно, но может битность операционок разная? Хотя наверное бред :oops:
 
Я думаю что скорее всего именно в битности систем или в разности операционок
У меня на 64-битной винде выдало BN2FHBGu_
А на сервере какая битность?
 
Я думаю что скорее всего именно в битности систем или в разности операционок
У меня на 64-битной винде выдало BN2FHBGu_
А на сервере какая битность?
Эм...У меня на 64-битном арче (аналог скрипта на кристале сделал) и центосе выдало правильный вариант...
Значит походу не битность :eek: Возможно это что-то специфичное для винды только :eek:
 
Значит из-за винды. Скорее всего при работе с большими float что-то отличается
 
Как же нет - вот он получается:
PHP:
$remainder = $id % 64;
$id = ($id - $remainder) / 64;
В обеих переменных после этого float

Возможно причина объясняется здесь:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Нужно сравнить значение параметра precision в php.ini
 
Как же нет - вот он получается:
PHP:
$remainder = $id % 64;
$id = ($id - $remainder) / 64;
В обеих переменных после этого float

Возможно причина объясняется здесь:
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
Нужно сравнить значение параметра precision в php.ini
Эмм... Ты уверен? :crazy::eek:
PHP (remainder и id)
Код:
[user@server]# php test.php
integer: 17
integer: 21911418850130785
integer: 33
integer: 342365919533293
integer: 45
integer: 5349467492707
integer: 35
integer: 83585429573
integer: 5
integer: 1306022337
integer: 1
integer: 20406599
integer: 7
integer: 318853
integer: 5
integer: 4982
integer: 54
integer: 77
integer: 13
integer: 1
integer: 1
integer: 0
BN2FHBFjthR
Crystal (remainder и id)
Код:
laptop% ~/crystal-0.21.1-1/bin/crystal run ./test.cr
Int64: 17
Int64: 21911418850130785
Int64: 33
Int64: 342365919533293
Int64: 45
Int64: 5349467492707
Int64: 35
Int64: 83585429573
Int64: 5
Int64: 1306022337
Int64: 1
Int64: 20406599
Int64: 7
Int64: 318853
Int64: 5
Int64: 4982
Int64: 54
Int64: 77
Int64: 13
Int64: 1
Int64: 1
Int64: 0
"BN2FHBFjthR"
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху