LINUX.ORG.RU

Эй, ПХПшники, помогите с размерностью int.

 , ,


0

1

Необходимо на PHP много считать (сложение\вычитание) 32битные числа. Раньше код крутился на 64-битной системе и проблем не было. Теперь переехал на 32 битное недоразумение.
Как в 32 битном ПХП объявить целочисленную переменную длиной в 64 бита?

★★☆

Последнее исправление: Stahl (всего исправлений: 1)

взять ruby с BigDecimal, а пхп выкинуть на помойку как инструмент непригодный для решения элементарных задач.

TDrive ★★★★★
()

Юзай GMP расширение. Also, php не нужен.

anonymous
()

Что-то вообще не ясно о чем ты, ты же сам сказал что тебе нужно считать 32битные числа. Зачем тебе 64?

abs ★★★
()

Установить на 64 битную систему

goingUp ★★★★★
()
Ответ на: комментарий от abs

Ну? И как сложить два 32битных числа?

Stahl ★★☆
() автор топика

используй библиотеку или внешнюю утилиту, сам пых как-то нифига не заточен для нормальных вычислений

q11q11 ★★★★★
()

много считать
на PHP

Извращенец что-ли?

quantum-troll ★★★★★
()

А я всю жизнь живу и не задумываюсь над размерностью интов в 32-разрядном пыхе. Вот сейчас для проверки сложил 68719476735 с 68719476735, никакого переполнения.

amomymous ★★★
()

[почти-что-и-не-толсто]Использовать язык программирования, а не шаблонизатор-переросток.[/почти-что-и-не-толсто]

heilkitty ★★
()
Ответ на: комментарий от amomymous

Знаешь, а ты, кажется, прав. Проблема была не в переполнении.

Stahl ★★☆
() автор топика
Ответ на: комментарий от amomymous

А я всю жизнь живу и не задумываюсь над размерностью интов в 32-разрядном пыхе. Вот сейчас для проверки сложил 68719476735 с 68719476735, никакого переполнения.

Только результат будет не целый, а плавающий.

$ php -r 'var_dump(68719476735, 68719476735+68719476735);'
float(68719476735)
float(137438953470)

Разрядность целых в PHP всегда равна разрядности системы. Если требуется честных 64 бита на 32-х битном PHP, то надо подключать GMP.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Спасибо, теперь понятно даже, как это работает и в какой момент пойдут ошибки округления.

amomymous ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.