32 бита
23.11.2009 Понедельник 16:54
Кстати, о дворцах новых русских. Знакомый в факультативное время пишет прогу для собирания инфы о продаваемом/покупаемом жилье. Надо ему для чего-то. Инфа собирается с тематических веб-сайтов. Для каждого сайта, посвящённого недвижимости, пишется некий агент, который в автоматическом режиме сканирует этот сайт, парсит получаемый HTML и заносит собранную таким образом информацию в собственную базу данных. В общем, технические детали тут не важны. Просто интересно то, что на днях один такой агент вылетел с исключением. При ближайшем изучении проблемы была обнаружена непосредственная причина, заключавшаяся в следующем. Для хранения цены продаваемой недвижимости знакомый использует тип данных int, то есть целочисленное значение размером 32 бита. Диапазон значений, представляемых таким типом данных, — примерено от минус двух миллиардов до плюс двух миллиардов (почему-то используется число со знаком). Так вот, при парсинге очередного объявления о продаже, агент наткнулся на цену, которая превысила разрядность типа данных int! Цена продаваемой недвижимости составила больше двух миллиардов рублей и не уместилась в 32 двоичных бита! Теперь мой знакомый думает, переходить на числа без знака (тогда диапазон расширится до четырёх миллиардов рублей) или сразу перейти на int64, поддерживающий числа вплоть до 18 квинтиллионов.