NVStat 2.1 RC7

Обсуждение технических вопросов по продуктам Novell

Вставлю пять копеек как программист.

Сообщение Boris Morozov » 19 фев 2004, 22:09

Ситуация вполне объяснимая и вполне возможно тут виноват компилятор, которым компиляли сам PHP. Ваши числа выходят за размер нормального 4-байтного integer и требуют применения длинного 8 байтного формата.
Насколько я понимаю, парсер это дело плохо распознает и делает их 4 байтными со всеми вытекающими последствиями, которые точно соответствуют описанным. Такая же ситуация была в BP 7.0, когда умножался один двухбайтный integer на другой и результат получался больше максимального. Компилятор некорректно делал преобразование.

Мы выходили из ситуации явным применением более длинного типа данных или операциями с плавающей точкой.

Я не спец по PHP, но думаю завести явно переменную длинного типа или с плавающей точкой можно и там, а потом использовать в вычислениях и таким образом обойти багу.
Boris Morozov
 
Сообщения: 1333
Зарегистрирован: 05 июн 2002, 22:24
Откуда: Минск

Сообщение Михаил Григорьев » 25 фев 2004, 17:36

Можно конечно сделать так

<?

print (float)2147483648.0/2;

?>

Тогда конечно бага нет, НО это же маразм все числа приводить к float, выполнять операции, а потом приводить к int
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Пред.

Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

cron