Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определение Google PR не работает - ошибка операци, битовые операции XOR возможна ошибка на  
:(
    Опции темы
pavel_p
Дата 15.4.2008, 04:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 27.7.2007

Репутация: нет
Всего: нет



скачал обычные скрипты определения PR, настроил на локалхосте - всё работает.
перенес на сервак не работает - несколько дней выяснял причину - докопался до сути, но есть риск что это не единственный глюк который я поймал

причина - неправильная работа с отрицательным float:
на серваке:
Код
cs1816:/var/www/.../robot#  php -r "var_dump((-4738698911)^43814);";
int(-2147439834)

на локалхосте:
Код
C:\....\robot\bak20080415>(-4738698911)^43814);"; 
int(-443704761)


ясно дело что число -4738698911 не умещается в 32 бита. на локалхосте работает как раз в с этими 32 битами, а на серваке большое отрицательное число переводиться в 0x80000000 (число примерно равное минус 2 млрд)

платформа сервера Debian 4.0 - сдается мне что это корень всех проблем. PHP и 4й и 5й выдают один и тот же бред

попытался исправить ситуацию - просто поменять знак и проихвести оперцию XOR но не могу понять когда делать вычитание на 2 когда не делать

Код
function myxor(&$op1,$op2){
    if(is_float($op1) && $op1<0){
        $op1 = -$op1;
//      $op1 -= 2;
        $sign = -1;
    }else{
        $sign = 1;
    }
    $op1 ^= $op2;
    $op1*=$sign;
}

PM MAIL   Вверх
Aikus
Дата 15.4.2008, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 29.11.2007

Репутация: нет
Всего: 1



думаю решение кроется в этих вот словах: "GNU MP library"
Можно конечно самому запариться:
1. если число превышает значение целого числа оно переводится в число с плавающей точкой (пляски с бубном в этом направлении).
2. разбить большое число на массив из скажем суммы чисел (изврат!)
3. и мн. др. =)
PM MAIL   Вверх
sTa1kEr
Дата 15.4.2008, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Aikus @  15.4.2008,  07:30 Найти цитируемый пост)
думаю решение кроется в этих вот словах: "GNU MP library"

Совершенно верно: GNU Multiple Precision.
Этот вопрос уже не однократно обсуждался на форуме. К примеру, можете попробовать решение от Levsha 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.1352 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.