@utyfua

Mysql — сохранить большое число(10^25) а потом использовать его для вычислений?

есть необходимость сохранить большие числа в php. в mysql записал в varchar(200) но выходит 8.829090563937061e20 . как можно сделать точное и нормальное сохранение данных. пс в некоторых местах обработка идет в самом mysql(то есть ... set `data`=`data`/112 ну как то так). что не так я делаю?
  • Вопрос задан
  • 1482 просмотра
Решения вопроса 1
riky
@riky
Laravel
проблема начинается еще в пхп, поэтому и
записал в varchar(200) но выходит 8.829090563937061e20

в пхп числа превращаются в тип float и вся точность теряется.

для точной работы с большими числами используется модуль bc
пример для сложения php.net/manual/ru/function.bcadd.php
то есть числа должны быть строго строками

в mysql вы правильно делаете varchar для хранения, но с такими числами там работать нельзя.

исходя из задачи надо думать чем можно поступиться
то есть ... set `data`=`data`/112

либо доставать в пхп и делить php.net/manual/ru/function.bcdiv.php а потом снова записывать
либо если это надо для например сортировки то добавить поле double и дублировать в него, точность будет меньше но для сортировки должно хватить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Самые большие целые числа в MySQL - тип BIGINT (-9223372036854775808 ... 9223372036854775807), и BIGINT UNSIGNED (0 ... 18446744073709551615). Всё, что больше, уже типы FLOAT и DOUBLE.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы