Ошибка при преобразовании значения.

Started by vitabios, March 12, 2015, 05:20:33 PM

Previous topic - Next topic

vitabios

Почему то при умножении значения на 8 - я получаю отрицательное число. Выход из положения нашел в данной ситуации, но все равно не понятно почему так происходит

Victor Kirhenshtein

Скорее всего переполнение 32 бит целого. Попробуйте использовать int64($1).

vitabios

сделал тип целое (64 бит).

Преобразование данных
$1 = 1440987079;
return $1*8;


Возвращает значение  -1357005256

Причем что интересно, такое происходит только с некоторыми значениями. Например
$1 = 1234567890;
return $1*8;


возвращает нормальное значение  1286608528

Victor Kirhenshtein

Я имел ввиду в скрипте написать int64($1) - это преобразование типов:


return int64($1)*8;


vitabios