diff --git a/tests/template_tests/filter_tests/test_floatformat.py b/tests/template_tests/filter_tests/test_floatformat.py
index 3d6c34a552..6183f6a069 100644
--- a/tests/template_tests/filter_tests/test_floatformat.py
+++ b/tests/template_tests/filter_tests/test_floatformat.py
@@ -4,6 +4,7 @@ from django.template.defaultfilters import floatformat
 from django.test import SimpleTestCase
 from django.utils import translation
 from django.utils.safestring import mark_safe
+from django.utils.version import PYPY
 
 from ..utils import setup
 
@@ -181,12 +182,21 @@ class FunctionTests(SimpleTestCase):
             "-1E10000000000000000",
             "1e10000000000000000",
             "-1e10000000000000000",
-            "1" + "0" * 1_000_000,
         ]
         for value in cases:
             with self.subTest(value=value):
                 self.assertEqual(floatformat(value), value)
 
+    def test_too_many_digits_to_render_very_long(self):
+        value = "1" + "0" * 1_000_000
+        if PYPY:
+            # PyPy casts decimal parts to int, which reaches the integer string
+            # conversion length limit (default 4300 digits, CVE-2020-10735).
+            with self.assertRaises(ValueError):
+                floatformat(value)
+        else:
+            self.assertEqual(floatformat(value), value)
+
     def test_float_dunder_method(self):
         class FloatWrapper:
             def __init__(self, value):