diff --git a/faker/providers/python/__init__.py b/faker/providers/python/__init__.py index d601c8d4eb..374a5793ed 100644 --- a/faker/providers/python/__init__.py +++ b/faker/providers/python/__init__.py @@ -352,9 +352,9 @@ def pydecimal( # Because the random result might have the same number of decimals as max_value the random number # might be above max_value or below min_value if max_value is not None and result > max_value: - result = Decimal(max_value) + result = Decimal(str(max_value)) if min_value is not None and result < min_value: - result = Decimal(min_value) + result = Decimal(str(min_value)) return result diff --git a/tests/providers/test_python.py b/tests/providers/test_python.py index 4b89ebc377..5af45bf245 100644 --- a/tests/providers/test_python.py +++ b/tests/providers/test_python.py @@ -506,6 +506,16 @@ def test_min_value_10_pow_1000_return_greater_number(self): result = self.fake.pydecimal(min_value=10**1000) self.assertGreater(result, 10**1000) + def test_min_value_float_returns_correct_digit_number(self): + Faker.seed("6") + result = self.fake.pydecimal(left_digits=1, right_digits=1, min_value=0.2, max_value=0.3) + self.assertEqual(decimal.Decimal("0.2"), result) + + def test_max_value_float_returns_correct_digit_number(self): + Faker.seed("3") + result = self.fake.pydecimal(left_digits=1, right_digits=1, min_value=0.2, max_value=0.3) + self.assertEqual(decimal.Decimal("0.3"), result) + class TestPystr(unittest.TestCase): def setUp(self):