From b1ee6875820839a59f1b6f4a5fedc7cad8883834 Mon Sep 17 00:00:00 2001 From: liukun Date: Mon, 8 Aug 2022 16:36:54 +0800 Subject: [PATCH] Fix metric(0) crash. Call metrics(0) gives `ValueError: math domain error` before this patch. --- src/humanize/number.py | 2 +- tests/test_number.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/humanize/number.py b/src/humanize/number.py index 0c71e82..372f932 100644 --- a/src/humanize/number.py +++ b/src/humanize/number.py @@ -508,7 +508,7 @@ def metric(value: float, unit: str = "", precision: int = 3) -> str: Returns: str: """ - exponent = int(math.floor(math.log10(abs(value)))) + exponent = int(math.floor(math.log10(abs(value)))) if value != 0 else 0 if exponent >= 27 or exponent < -24: return scientific(value, precision - 1) + unit diff --git a/tests/test_number.py b/tests/test_number.py index 6cf3508..7022fd6 100644 --- a/tests/test_number.py +++ b/tests/test_number.py @@ -194,6 +194,7 @@ def test_clamp(test_args: list[typing.Any], expected: str) -> None: @pytest.mark.parametrize( "test_args, expected", [ + ([0], "0.00"), ([1, "Hz"], "1.00 Hz"), ([1.0, "W"], "1.00 W"), ([3, "C"], "3.00 C"),