41 lines
755 B
Python
41 lines
755 B
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from math import ceil, floor
|
|
|
|
|
|
def round_with_base(x, base=0.5):
|
|
"""Round to a multiple of base
|
|
|
|
:example:
|
|
>>> round_with_base(1.33, 0.1)
|
|
1.3
|
|
>>> round_with_base(1.33, 0.2)
|
|
1.4
|
|
>>> round_with_base(1.33, 1)
|
|
1
|
|
>>> round_with_base(1.33, 2)
|
|
2
|
|
"""
|
|
try:
|
|
prec = len(str(base).split(".")[1])
|
|
except IndexError:
|
|
prec = 0
|
|
return round(base * round(float(x) / base), prec)
|
|
|
|
|
|
def round_half_point(x):
|
|
"""Round to nearest half point
|
|
|
|
:example:
|
|
>>> round_half_point(1.33)
|
|
1.5
|
|
>>> round_half_point(1.1)
|
|
1.0
|
|
>>> round_half_point(1.66)
|
|
1.5
|
|
>>> round_half_point(1.76)
|
|
2.0
|
|
"""
|
|
return round_with_base(x, base=0.5)
|