Я ожидаю округления с точностью до 0,05. Например, если у меня есть число 1.01, оно должно быть округлено до 1.05. Есть ли библиотеки Python, которые могут быть использованы для этого?

1
Punter Vicky 28 Июн 2019 в 17:50

3 ответа

Лучший ответ

Я бы решил это следующим образом:

import math

a = 1.01
b = a*20
c = math.ceil(b)
d = c/20

print(d)

Я знаю, что округление до ближайшего целого значения легко сделать, поэтому я преобразую свое число так, чтобы вместо увеличения на 0.05 я хотел увеличить на 1. Это делается путем умножения 20 (как 0.05*20=1). Затем я могу округлить свое 20x старшее число до ближайшего целого числа и разделить на 20, чтобы получить то, что я ищу.

Также обратите внимание, что math включен в Python, поэтому нет необходимости загружать новый модуль!

3
galfisher 28 Июн 2019 в 16:05

Вы могли бы сделать что-то вроде:

import math

def round_by_05(num):
    check_num = num * 20
    check_num = math.ceil(check_num)

    return check_num / 20

Это дает:

>>> round_by_05(1.01)
1.05
>>> round_by_05(1.101)
1.15
2
Tomerikoo 28 Июн 2019 в 14:58

Общее решение (без необходимости math.ceil())

def round_to_next(val, step):
    return val - (val % step) + (step if val % step != 0 else 0)

Что дает:

>>> round_to_next(1.04, 0.05)
1.05
>>> round_to_next(1.06, 0.05)
1.1
>>> round_to_next(1.0, 0.05)
1.0
2
Kyle Willmon 28 Июн 2019 в 16:18