diff --git a/src/humanize/number.py b/src/humanize/number.py index f4dcb05..5d0c862 100644 --- a/src/humanize/number.py +++ b/src/humanize/number.py @@ -367,7 +367,7 @@ def fractional(value: NumberOrString) -> str: if not whole_number: return f"{numerator:.0f}/{denominator:.0f}" - return f"{whole_number:.0f} {numerator:.0f}/{denominator:.0f}" + return f"{whole_number:.0f} {abs(numerator):.0f}/{denominator:.0f}" def scientific(value: NumberOrString, precision: int = 2) -> str: diff --git a/tests/test_number.py b/tests/test_number.py index cb74fcf..0871964 100644 --- a/tests/test_number.py +++ b/tests/test_number.py @@ -178,6 +178,9 @@ def test_apnumber(test_input: int | str, expected: str) -> None: (1.5, "1 1/2"), (0.3, "3/10"), (0.333, "333/1000"), + (-0.3, "-3/10"), + (-1.3, "-1 3/10"), + (-2.5, "-2 1/2"), (math.nan, "NaN"), (math.inf, "+Inf"), (-math.inf, "-Inf"),