Раунд до ближайшего 500, Python

Я ищу, чтобы найти способ округлить до ближайшего 500. Я использовал:

math.ceil(round(8334.00256 + 250, -3))

У меня есть значение из шкалы на карте, которую я делаю в ArcGIS. У меня есть способность читать и писать масштабный коэффициент (т.е. 1: 8334.... в основном, вы устанавливаете тысячный, а по умолчанию - коэффициент). Если масштабный коэффициент не является фактором 500, я хочу округлить к следующему 500. Математика будет округлять любое десятичное значение, а раунд (n, -3) округляется до ближайшей тысячной, но я изо всех сил пытаюсь найти способ округления до ближайшего 500.

Любые предложения? Благодаря, Mike

Ответ 1

Масштаб, круглый, нечеткий:

round(x / 500.0) * 500.0

Изменить. Чтобы округлить до следующего кратного 500, используйте те же логики с math.ceil() вместо round():

math.ceil(x / 500.0) * 500.0

Ответ 2

Я лично считаю округление, но беспорядочным. Я бы предпочел использовать:

(x+250)//500*500

// означает целочисленное деление.

ИЗМЕНИТЬ: О, я пропустил, что вы кругом "вверх". Тогда возможно

-(-x//500)*500

Ответ 3

Возможно, что-то вроде этого:

round(float(x) / 500) * 500

Преобразование "float" не нужно, если вы используете Python 3 или более поздней версии, или если вы выполняете оператор from __future__ import division для целочисленного целочисленного деления.