Круглый поплавок до ближайшего 2/100

1

Мне нужно взять число, равное 0,405, и округлить его до 0,40, а также округлять 0,412 до 0,42. Есть ли встроенная функция для этого?

Теги:
numpy
scipy

2 ответа

4
Лучший ответ

Решение общего назначения, это позволяет округлять до произвольного разрешения (ну, конечно, но без нуля, но разрешение нуля мало имеет смысла (a)). Для вашего случая вам просто нужно предоставить 0.02 в качестве разрешения, хотя возможны другие значения, как показано в тестовых примерах.

# This is the function you want.

def roundPartial (value, resolution):
    return round (value / resolution) * resolution

# All these are just test cases, the first two being your own test data.

print "Rounding to fiftieths"
print roundPartial (0.405, 0.02)
print roundPartial (0.412, 0.02)

print "Rounding to quarters"
print roundPartial (1.38, 0.25)
print roundPartial (1.12, 0.25)
print roundPartial (9.24, 0.25)
print roundPartial (7.76, 0.25)

print "Rounding to hundreds"
print roundPartial (987654321, 100)

Выводится:

Rounding to fiftieths
0.4
0.42
Rounding to quarters
1.5
1.0
9.25
7.75
Rounding to hundreds
987654300.0

(a) Если у вас есть особое расстройство личности, которое требует от вас возможности справиться с этой возможностью, просто имейте в виду, что вы находитесь за ближайшим числом, которое кратно вашему желаемому разрешению. Поскольку ближайшее число до N (для любого N), которое кратно 0, всегда равно 0, вы можете изменить функцию следующим образом:

def roundPartial (value, resolution):
    if resolution == 0:
        return 0
    return round (value / resolution) * resolution

В качестве альтернативы вы можете просто обещать себе, что не должны принимать ноль в качестве разрешения: -)

  • 0
    Я думаю, что лучший способ справиться с нулевым разрешением - это просто вернуть входные данные. Если вы думаете об этом в пределе, когда разрешение стремится к нулю, выход стремится к входу.
  • 0
    Жаль, что вы не указали ОП на свой предыдущий вопрос и ответ .
0

Небольшое исправление для более раннего решения:

def roundPartial (value, resolution):
    return round (float(value) / resolution) * resolution

Ранее

roundPartial(19, 10) = 10.0

С исправлением

roundPartial(19, 10) = 20.0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню