diff --git a/django/db/backends/utils.py b/django/db/backends/utils.py
index e7b9c30193..2c404b3a0b 100644
--- a/django/db/backends/utils.py
+++ b/django/db/backends/utils.py
@@ -225,18 +225,14 @@ def format_number(value, max_digits, decimal_places):
     """
     if value is None:
         return None
-    if isinstance(value, decimal.Decimal):
-        context = decimal.getcontext().copy()
-        if max_digits is not None:
-            context.prec = max_digits
-        if decimal_places is not None:
-            value = value.quantize(decimal.Decimal(1).scaleb(-decimal_places), context=context)
-        else:
-            context.traps[decimal.Rounded] = 1
-            value = context.create_decimal(value)
-        return "{:f}".format(value)
+    context = decimal.getcontext().copy()
+    if max_digits is not None:
+        context.prec = max_digits
     if decimal_places is not None:
-        return "%.*f" % (decimal_places, value)
+        value = value.quantize(decimal.Decimal(1).scaleb(-decimal_places), context=context)
+    else:
+        context.traps[decimal.Rounded] = 1
+        value = context.create_decimal(value)
     return "{:f}".format(value)