Skip to content

Commit eba52be

Browse files
committed
♻️ support negative numbers in round_number_str
1 parent f919f98 commit eba52be

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

plotly_resampler/figure_resampler/utils.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,14 +186,16 @@ def round_number_str(number: float) -> str:
186186
-------
187187
str
188188
The rounded number as a string.
189-
If the number is <= 0, None is returned.
189+
If the number is == 0, None is returned.
190190
191191
"""
192+
sign = "-" if number < 0 else ""
193+
number = abs(number)
192194
if number > 0.95:
193195
for unit, scaling in (("M", int(1e6)), ("k", int(1e3))):
194196
if number / scaling > 0.95:
195197
return f"{round(number / scaling)}{unit}"
196-
return str(round(number))
198+
return sign + str(round(number))
197199
if number > 0: # avoid log10(0)
198200
# we have a number between 0-0.95 -> round till nearest non-zero digit
199-
return str(round(number, 1 + abs(int(math.log10(number)))))
201+
return sign + str(round(number, 1 + abs(int(math.log10(number)))))

tests/test_utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ def test_timedelta_to_str():
8686
assert round_td_str(pd.Timedelta("1128.9us")) == "1ms"
8787
assert round_td_str(pd.Timedelta("128.9us")) == "129us"
8888
assert round_td_str((pd.Timedelta("14ns"))) == "14ns"
89+
# zero should return None
8990
assert round_td_str((pd.Timedelta("0ns"))) is None
9091

9192

@@ -110,4 +111,8 @@ def test_round_int_str():
110111
assert round_number_str(950_001) == "1M"
111112
assert round_number_str(1_950_001) == "2M"
112113
assert round_number_str(111_950_001) == "112M"
114+
# zero should return None
113115
assert round_number_str(0) is None
116+
# negative case
117+
assert round_number_str(-0.951) == "-1"
118+
assert round_number_str(-0.95) == "-0.9"

0 commit comments

Comments
 (0)