1000000000000000000 на входе с типом int в mysql превращается в 2147483647. Почему?

197
30 января 2018, 08:11

Не пойму почему выводится не понятная строка. Объясните что не так, на локальном сервере все показывается нормально но когда я залил проект на хостинг nginx+mysql (на локалке стоял тестовый сервер и sqlite) началась такая лабуда:

@register.filter
def eth(value):
"""Removes all values of arg from the given string"""
return str(int(value)/1000000000000000000)+" ETH"

функция фильтр, которой на вход попадает цифровое значение 1000000000000000000 это единица с 18 нулями, что бы перевести это значение в eth(эфириум) мы делим это цифру на 1000000000000000000 потому что в 1 эфире 18 нулей, должна получиться единица а получается вот такое чудо

2.147483647e-09 ETH

в базе данных тип поля стоит int не могу разобраться в чем дело, еще раз повторюсь на локальном тестовом сервере джанги все работает корректно. Спасибо за помощь!

Answer 1

Гугл говорит, что в MySQL тип INT вмещает числа до 4294967295. То есть явно сюда не влезет "целое число с 18 нулями". Не очень понятно, почему БД у вас не выбрасывает ошибку, если вы всё-таки пытаетесь хранить там такие числа, но, рекомендую вам взять BIGINT UNSIGNED - его должно вполне хватить.

READ ALSO
Заполнение связанных DataTable в DataSet

Заполнение связанных DataTable в DataSet

Есть DataSet с двумя DataTable в немВ каждой DataTable есть колонка Name(уникальная внутри таблицы)

203
Создание собственного Windows инсталлятора

Создание собственного Windows инсталлятора

Большинство инсталляторов создаётся при помощи разных утилит (WiX, Inno Setup, Install Shield и тд

193
Как присвоить родителю объект в Unity?

Как присвоить родителю объект в Unity?

нужно присвоить Main Camera обратно родителю Player

207
Анимация кнопки в XAML

Анимация кнопки в XAML

Сделал примитивную кнопку с анимацией на MouseEnter и MouseLeaveЕсли быстро провести мышкой через кнопку насквозь, то анимация MouseEnter запустится, потом...

207