Skip to content
Snippets Groups Projects

Resolve "release v2.3.0"

Merged Ghost User requested to merge release_v2.3.0 into master
2 files
+ 83
3
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 18
2
@@ -123,7 +123,7 @@ def float_round(number: float, decimals: int = 0, round_type: Callable = math.ce
return round_type(number * multiplier) / multiplier
def relative_round(x: float, sig: int) -> float:
def relative_round(x: float, sig: int, ceil=False, floor=False) -> float:
"""
Round small numbers according to given "significance".
@@ -135,7 +135,23 @@ def relative_round(x: float, sig: int) -> float:
:return: rounded number
"""
assert sig >= 1
return round(x, sig-int(np.floor(np.log10(abs(x))))-1)
assert not (ceil and floor)
if x == 0:
return 0
else:
rounded_number = round(x, sig-get_order(x)-1)
if floor is True and rounded_number > round(x, sig-get_order(x)):
res = rounded_number - 10 ** (get_order(x) - sig + 1)
elif ceil is True and rounded_number < round(x, sig-get_order(x)):
res = rounded_number + 10 ** (get_order(x) - sig + 1)
else:
res = rounded_number
return round(res, sig-get_order(res)-1)
def get_order(x: float):
"""Get order of number (as power of 10)"""
return int(np.floor(np.log10(abs(x))))
def remove_items(obj: Union[List, Dict, Tuple], items: Any):
Loading